@@ -25,32 +25,22 @@ ORDER BY user_id ASC;
25
25
-- GetTemplateInsights has a granularity of 5 minutes where if a session/app was
26
26
-- in use during a minute, we will add 5 minutes to the total usage for that
27
27
-- session/app (per user).
28
- WITH ts AS (
29
- SELECT
30
- d::timestamptz AS from_,
31
- (d::timestamptz + ' 5 minute' ::interval) AS to_,
32
- EXTRACT(epoch FROM ' 5 minute' ::interval) AS seconds
33
- FROM
34
- -- Subtract 1 second from end_time to avoid including the next interval in the results.
35
- generate_series(@start_time::timestamptz , (@end_time::timestamptz ) - ' 1 second' ::interval, ' 5 minute' ::interval) d
36
- ), agent_stats_by_interval_and_user AS (
28
+ WITH agent_stats_by_interval_and_user AS (
37
29
SELECT
38
- ts .from_ ,
39
- ts .to_ ,
30
+ date_trunc(' minute' , was .created_at ),
40
31
was .user_id ,
41
32
array_agg(was .template_id ) AS template_ids,
42
- CASE WHEN SUM (was .session_count_vscode ) > 0 THEN ts . seconds ELSE 0 END AS usage_vscode_seconds,
43
- CASE WHEN SUM (was .session_count_jetbrains ) > 0 THEN ts . seconds ELSE 0 END AS usage_jetbrains_seconds,
44
- CASE WHEN SUM (was .session_count_reconnecting_pty ) > 0 THEN ts . seconds ELSE 0 END AS usage_reconnecting_pty_seconds,
45
- CASE WHEN SUM (was .session_count_ssh ) > 0 THEN ts . seconds ELSE 0 END AS usage_ssh_seconds
46
- FROM ts
47
- JOIN workspace_agent_stats was ON (
48
- was .created_at >= ts . from_
49
- AND was .created_at < ts . to_
33
+ CASE WHEN SUM (was .session_count_vscode ) > 0 THEN 60 ELSE 0 END AS usage_vscode_seconds,
34
+ CASE WHEN SUM (was .session_count_jetbrains ) > 0 THEN 60 ELSE 0 END AS usage_jetbrains_seconds,
35
+ CASE WHEN SUM (was .session_count_reconnecting_pty ) > 0 THEN 60 ELSE 0 END AS usage_reconnecting_pty_seconds,
36
+ CASE WHEN SUM (was .session_count_ssh ) > 0 THEN 60 ELSE 0 END AS usage_ssh_seconds
37
+ FROM workspace_agent_stats was
38
+ WHERE
39
+ was .created_at >= @start_time:: timestamptz
40
+ AND was .created_at < @end_time:: timestamptz
50
41
AND was .connection_count > 0
51
42
AND CASE WHEN COALESCE(array_length(@template_ids::uuid[], 1 ), 0 ) > 0 THEN was .template_id = ANY(@template_ids::uuid[]) ELSE TRUE END
52
- )
53
- GROUP BY ts .from_ , ts .to_ , ts .seconds , was .user_id
43
+ GROUP BY date_trunc(' minute' , was .created_at ), was .user_id
54
44
), template_ids AS (
55
45
SELECT array_agg(DISTINCT template_id) AS ids
56
46
FROM agent_stats_by_interval_and_user, unnest(template_ids) template_id
0 commit comments