CREATE TABLE event ( user_id BIGINT, event_id BIGINT, time BIGINT NOT NULL, data JSON NOT NULL, PRIMARY KEY (user_id, event_id) )
SELECT user_id, view_homepage, view_homepage_time, enter_credit_card, enter_credit_card_time FROM ( -- Get the first time each user viewed the homepage. SELECT user_id, 1 AS view_homepage, min(time) AS view_homepage_time FROM event WHERE data->>'type' = 'view_homepage' GROUP BY user_id ) e1 LEFT JOIN LATERAL ( -- For each row, get the first time the user_id did the enter_credit_card -- event, if one exists within two weeks of view_homepage_time. SELECT 1 AS enter_credit_card, time AS enter_credit_card_time FROM event WHERE user_id = e1.user_id AND data->>'type' = 'enter_credit_card' AND time BETWEEN view_homepage_time AND (view_homepage_time + 1000*60*60*24*14) ORDER BY time LIMIT 1 ) e2 ON true
SELECT user_id, 1 AS view_homepage, min(time) AS view_homepage_time FROM event WHERE data->>'type' = 'view_homepage' GROUP BY user_id
SELECT 1 AS enter_credit_card, time AS enter_credit_card_time FROM event WHERE user_id = e1.user_id AND data->>'type' = 'enter_credit_card' AND time BETWEEN view_homepage_time AND (view_homepage_time + 1000*60*60*24*14) ORDER BY time LIMIT 1
user_id | view_homepage | view_homepage_time | enter_credit_card | enter_credit_card_time ---------+---------------+--------------------+-------------------+------------------------ 567 | 1 | 5234567890 | 1 | 5839367890 234 | 1 | 2234567890 | | 345 | 1 | 3234567890 | | 456 | 1 | 4234567890 | | 678 | 1 | 6234567890 | | 123 | 1 | 1234567890 | | ...
SELECT sum(view_homepage) AS viewed_homepage, sum(enter_credit_card) AS entered_credit_card FROM ( -- Get the first time each user viewed the homepage. SELECT user_id, 1 AS view_homepage, min(time) AS view_homepage_time FROM event WHERE data->>'type' = 'view_homepage' GROUP BY user_id ) e1 LEFT JOIN LATERAL ( -- For each (user_id, view_homepage_time) tuple, get the first time that -- user did the enter_credit_card event, if one exists within two weeks. SELECT 1 AS enter_credit_card, time AS enter_credit_card_time FROM event WHERE user_id = e1.user_id AND data->>'type' = 'enter_credit_card' AND time BETWEEN view_homepage_time AND (view_homepage_time + 1000*60*60*24*14) ORDER BY time LIMIT 1 ) e2 ON true
viewed_homepage | entered_credit_card -----------------+--------------------- 827 | 10
SELECT sum(view_homepage) AS viewed_homepage, sum(use_demo) AS use_demo, sum(enter_credit_card) AS entered_credit_card FROM ( -- Get the first time each user viewed the homepage. SELECT user_id, 1 AS view_homepage, min(time) AS view_homepage_time FROM event WHERE data->>'type' = 'view_homepage' GROUP BY user_id ) e1 LEFT JOIN LATERAL ( -- For each row, get the first time the user_id did the use_demo -- event, if one exists within one week of view_homepage_time. SELECT user_id, 1 AS use_demo, time AS use_demo_time FROM event WHERE user_id = e1.user_id AND data->>'type' = 'use_demo' AND time BETWEEN view_homepage_time AND (view_homepage_time + 1000*60*60*24*7) ORDER BY time LIMIT 1 ) e2 ON true LEFT JOIN LATERAL ( -- For each row, get the first time the user_id did the enter_credit_card -- event, if one exists within one week of use_demo_time. SELECT 1 AS enter_credit_card, time AS enter_credit_card_time FROM event WHERE user_id = e2.user_id AND data->>'type' = 'enter_credit_card' AND time BETWEEN use_demo_time AND (use_demo_time + 1000*60*60*24*7) ORDER BY time LIMIT 1 ) e3 ON true
viewed_homepage | use_demo | entered_credit_card -----------------+----------+--------------------- 827 | 220 | 86
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有