@@ -143,40 +143,31 @@ FROM
143
143
insights;
144
144
145
145
-- name: GetTemplateInsightsByTemplate :many
146
- WITH
147
- -- The purpose of this CTE is to flatten the data so that a user is
148
- -- only counted once per interval/template.
149
- insights AS (
150
- SELECT
151
- template_id,
152
- user_id,
153
- -- See motivation in GetTemplateInsights for LEAST(SUM(n), 30).
154
- LEAST(SUM (usage_mins), 30 ) AS usage_mins,
155
- LEAST(SUM (ssh_mins), 30 ) AS ssh_mins,
156
- LEAST(SUM (sftp_mins), 30 ) AS sftp_mins,
157
- LEAST(SUM (reconnecting_pty_mins), 30 ) AS reconnecting_pty_mins,
158
- LEAST(SUM (vscode_mins), 30 ) AS vscode_mins,
159
- LEAST(SUM (jetbrains_mins), 30 ) AS jetbrains_mins
160
- FROM
161
- template_usage_stats
162
- WHERE
163
- start_time >= @start_time::timestamptz
164
- AND end_time <= @end_time::timestamptz
165
- GROUP BY
166
- start_time, template_id, user_id
167
- )
146
+ WITH agent_stats_by_interval_and_user AS (
147
+ SELECT
148
+ date_trunc(' minute' , was .created_at ) AS created_at_trunc,
149
+ was .template_id ,
150
+ was .user_id ,
151
+ CASE WHEN SUM (was .session_count_vscode ) > 0 THEN 60 ELSE 0 END AS usage_vscode_seconds,
152
+ CASE WHEN SUM (was .session_count_jetbrains ) > 0 THEN 60 ELSE 0 END AS usage_jetbrains_seconds,
153
+ CASE WHEN SUM (was .session_count_reconnecting_pty ) > 0 THEN 60 ELSE 0 END AS usage_reconnecting_pty_seconds,
154
+ CASE WHEN SUM (was .session_count_ssh ) > 0 THEN 60 ELSE 0 END AS usage_ssh_seconds
155
+ FROM workspace_agent_stats was
156
+ WHERE
157
+ was .created_at >= @start_time::timestamptz
158
+ AND was .created_at < @end_time::timestamptz
159
+ AND was .connection_count > 0
160
+ GROUP BY created_at_trunc, was .template_id , was .user_id
161
+ )
168
162
169
163
SELECT
170
164
template_id,
171
- COUNT (DISTINCT user_id) AS active_users,
172
- (SUM (usage_mins) * 60 )::bigint AS usage_total_seconds, -- Includes app usage.
173
- (SUM (ssh_mins) * 60 )::bigint AS usage_ssh_seconds,
174
- (SUM (sftp_mins) * 60 )::bigint AS usage_sftp_seconds,
175
- (SUM (reconnecting_pty_mins) * 60 )::bigint AS usage_reconnecting_pty_seconds,
176
- (SUM (vscode_mins) * 60 )::bigint AS usage_vscode_seconds,
177
- (SUM (jetbrains_mins) * 60 )::bigint AS usage_jetbrains_seconds
178
- FROM
179
- insights
165
+ COALESCE(COUNT (DISTINCT user_id))::bigint AS active_users,
166
+ COALESCE(SUM (usage_vscode_seconds), 0 )::bigint AS usage_vscode_seconds,
167
+ COALESCE(SUM (usage_jetbrains_seconds), 0 )::bigint AS usage_jetbrains_seconds,
168
+ COALESCE(SUM (usage_reconnecting_pty_seconds), 0 )::bigint AS usage_reconnecting_pty_seconds,
169
+ COALESCE(SUM (usage_ssh_seconds), 0 )::bigint AS usage_ssh_seconds
170
+ FROM agent_stats_by_interval_and_user
180
171
GROUP BY template_id;
181
172
182
173
-- name: GetTemplateAppInsights :many
0 commit comments