SQL запрос по группировке сессий пользователя
Помогите сделать SQL запрос по заданным условиям:
Таблица содержит информацию о пользовательских сессиях. Написать запрос, который вернет максимальное число одновременных подключений для каждого пользователя и минимальное время, когда это произошло.
t.username – логин пользователя ; t.logon_time – время старта сессии logoff_time – время закрытия сессии
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
WITH
cte1 AS ( SELECT username, logon_time event_time, 1 weight FROM source_table
UNION ALL
SELECT username, logoff_time, -1 FROM source_table ),
cte2 AS ( SELECT username,
event_time,
SUM(weight) OVER (PARTITION BY username ORDER BY event_time, weight) amount
FROM cte1 ),
cte3 AS ( SELECT username,
event_time,
amount,
ROW_NUMBER() OVER (PARTITION BY username ORDER BY amount DESC, event_time ASC) rn
FROM cte2 )
SELECT username, event_time, amount
FROM cte3
WHERE rn = 1;