Skip to content

Instantly share code, notes, and snippets.

@izzymiller
Created April 12, 2023 15:47
Show Gist options
  • Select an option

  • Save izzymiller/b894c6a3fd6146ff7b8d87e792bc2a94 to your computer and use it in GitHub Desktop.

Select an option

Save izzymiller/b894c6a3fd6146ff7b8d87e792bc2a94 to your computer and use it in GitHub Desktop.
SELECT chat,sender,text,
message_date,
SUM(is_new_session) OVER (ORDER BY chat, message_date) AS global_session_id,
SUM(is_new_session) OVER (PARTITION BY chat ORDER BY message_date) AS chat_session_id
FROM (
SELECT *,
CASE WHEN EXTRACT('EPOCH' FROM message_date) - EXTRACT('EPOCH' FROM last_event) >= (60 * 120)
OR last_event IS NULL
THEN 1 ELSE 0 END AS is_new_session
FROM (
SELECT chat,sender,text,
message_date,
LAG(message_date,1) OVER (PARTITION BY chat ORDER BY message_date) AS last_event
FROM messages
) last
) final
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment