update mat view, now save only last answer for session

This commit is contained in:
Pavel 2024-06-14 13:58:29 +03:00
parent 465cc5e6e0
commit d62217cf39

@ -35,10 +35,15 @@ CREATE MATERIALIZED VIEW IF NOT EXISTS mv_last_answers_events
ENGINE = MergeTree()
ORDER BY (ctxsession, event_time) AS
SELECT
event_time,ctxsession,ctxquizid,ctxquestionid,ctxidint,message,keyos,ctxuserip,ctxuserport,keydomain,keypath,ctxquiz,ctxreferrer
FROM statistics WHERE message IN ('InfoQuizOpen', 'InfoAnswer', 'InfoResult')
AND event_level = 'info' AND create_time = (SELECT max(create_time) FROM statistics AS inner_table
WHERE inner_table.ctxsession = statistics.ctxsession);
event_time, ctxsession, ctxquizid, ctxquestionid, ctxidint, message, keyos,
ctxuserip, ctxuserport, keydomain, keypath, ctxquiz, ctxreferrer
FROM (SELECT
event_time, ctxsession, ctxquizid, ctxquestionid, ctxidint, message, keyos,
ctxuserip, ctxuserport, keydomain, keypath, ctxquiz, ctxreferrer,
row_number() OVER (PARTITION BY ctxsession ORDER BY create_time DESC) as row_num
FROM statistics
WHERE message IN ('InfoQuizOpen', 'InfoAnswer', 'InfoResult') AND event_level = 'info') AS sorted
WHERE row_num = 1;
`
_, err := s.conn.ExecContext(ctx, query)
if err != nil {