Я пытаюсь представить, как долго люди были подключены к VPN в течение определенного времени. Прямо сейчас я могу спросить, как долго длится каждый сеанс, но хочу добавить их для каждого пользователя.
Как я могу использовать функцию SUM для добавления результатов TO_CHAR ((duration
|| ' second ') :: interval,' HH24: MI: SS ') AS connection_duration, , чтобы показать общее количество времени, в течение которого каждый пользователь был подключен?
SELECT user
AS vpn_user, remip
AS peerip, duration
AS vpn_dur, TO_CHAR (from_itime ("itime" - duration
), 'YYYY-MM-DD') как начальная дата, TO_CHAR (from_itime ("itime" - duration
), 'HH24: MI' ) в качестве начального времени, TO_CHAR ((duration
|| 'секунда') :: интервал, 'HH24: MI: SS') AS total_duration, TO_CHAR (from_itime ("itime"), "YYYY-MM-DD") в качестве конечной даты , TO_CHAR (from_itime ("itime"), 'HH24: MI') как end_time, tunneltype
AS vpn_type
FROM $ log
WHERE $ filter AND subtype
= 'vpn' И tunneltype
IN ('ssl-tunnel') И action
= 'tunnel-down' И COALESCE (NULLIFNA (user
), IPSTR (remip
)) НЕ НУЛЬ, И tunnelid
НЕ НУЛЬ
GROUP BY vpn_user, peerip, vpn_dur, start_date, start_time, end_date, end_time, vpn_type ORDER BY start_date, vpn_user AS C