DROP MATERIALIZED VIEW if exists mv_last_answers_events;
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_answers
            ENGINE = MergeTree() ORDER BY event_time
            POPULATE AS
SELECT ctxquizid     AS quizid,
       ctxquestionid AS questionid,
       ctxsession    AS session,
       event_time
FROM default.statistics
WHERE (message IN ('InfoQuizOpen', 'InfoAnswer', 'InfoResult'))
  AND (event_level = 'info')
LIMIT 1 BY ctxquestionid, ctxsession;

CREATE MATERIALIZED VIEW IF NOT EXISTS mv_quiz_open
    ENGINE = MergeTree()
    ORDER BY event_time POPULATE AS
SELECT ctxquizid AS quizid,ctxquestionid AS questionid, ctxsession AS session, event_time
FROM default.statistics
WHERE message = 'InfoContactForm'AND event_level = 'info'
LIMIT 1 BY ctxquestionid, ctxsession;

CREATE VIEW IF NOT EXISTS view_last_answers AS
SELECT last_quesion,
    any(last_quiz)                     AS quiz,
       argMax(session, length(questions)) AS long_session
FROM default.view_respondent_paths
GROUP BY last_quesion;

CREATE VIEW IF NOT EXISTS view_pipelines_signs AS
SELECT target_quiz,
       questionid,
       long_sess
FROM (
         SELECT questionid,
             any(quiz)                AS target_quiz,
             any(long_session)        AS long_sess,
             groupArray(last_quesion) AS footsteps
         FROM default.view_last_answers
             INNER JOIN default.mv_answers ON long_session = session
         GROUP BY questionid
     )
WHERE length(footsteps) = 1;

CREATE VIEW IF NOT EXISTS view_respondent_paths AS
SELECT session,
       groupArray(questionid) AS questions,
       anyLast(questionid)    AS last_quesion,
       anyLast(quizid)        AS last_quiz
FROM default.mv_answers
GROUP BY session;

-- тут хранится информация по оплатах пользователей именно успешных, успешность показывает keysuccess = 1
CREATE MATERIALIZED VIEW IF NOT EXISTS ltv_view
            ENGINE = MergeTree()
                ORDER BY (ctxuserid)
            POPULATE AS
SELECT create_time, -- время создания
       ctxuserid, -- id пользователя
       ctxaccountid, -- id oid в монго
       ctxprice, -- цена корзины после подсчета скидки
       ctxrowprice -- цена корзины до скидки
FROM default.statistics
WHERE keysuccess = 1 and message = 'InfoPayCart'AND event_level = 'info';


CREATE MATERIALIZED VIEW IF NOT EXISTS user_regs_view
            ENGINE = MergeTree()
                ORDER BY (ctxuserid)
            POPULATE AS
SELECT create_time, -- время создания
       ctxuserid, -- id пользователя
       ctxaccountid, -- oid акканута в монго
       keyfromsource, -- название сервиса откуда пришел, интересно пока что только quiz
       keyfromid, -- quiz id откуда с которого пришел пользователь
       keyfrompartner, -- id пользователя который является партнером (тот кто привел)
       ctxemail, -- почта пользоователя
       ctxlogin -- логин пользователя
FROM default.statistics
WHERE message = 'InfoCreateAccount'AND event_level = 'info';

CREATE MATERIALIZED VIEW IF NOT EXISTS promo_view
            ENGINE = MergeTree()
                ORDER BY (ctxuserid)
            POPULATE AS
SELECT create_time, --время создания
       ctxid, -- id промо в монге
       ctxuserid, -- id пользователя который активировал
       ctxcode, -- кодовое слово (заполняется если по нему была активация)
       ctxpromocodeid -- фастлинк (заполняется если по нему была активация)
FROM default.statistics
WHERE message IN ( 'InfoPromocodeActivated', 'InfoFastlinkActivated') AND event_level = 'info';