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