Untitled
unknown
plain_text
a year ago
581 B
9
Indexable
WITH ranked_logs AS (
SELECT
user_id,
time,
LAG(time, 1) OVER (PARTITION BY user_id ORDER BY time) AS prev_time
FROM logs
),
activity_periods AS (
SELECT
user_id,
time,
CASE
WHEN prev_time IS NULL OR time - prev_time > 30 THEN 1
ELSE 0
END AS is_new_period
FROM ranked_logs
),
user_activity_periods AS (
SELECT
user_id,
SUM(is_new_period) AS cnt
FROM activity_periods
GROUP BY user_id
)
SELECT user_id, cnt
FROM user_activity_periods
ORDER BY user_id;Editor is loading...
Leave a Comment