| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- -- name: GetUsageByDay :many
- SELECT
- date(created_at, 'unixepoch') as day,
- SUM(prompt_tokens) as prompt_tokens,
- SUM(completion_tokens) as completion_tokens,
- SUM(cost) as cost,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY date(created_at, 'unixepoch')
- ORDER BY day DESC;
- -- name: GetUsageByModel :many
- SELECT
- COALESCE(model, 'unknown') as model,
- COALESCE(provider, 'unknown') as provider,
- COUNT(*) as message_count
- FROM messages
- WHERE role = 'assistant'
- GROUP BY model, provider
- ORDER BY message_count DESC;
- -- name: GetUsageByHour :many
- SELECT
- CAST(strftime('%H', created_at, 'unixepoch') AS INTEGER) as hour,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY hour
- ORDER BY hour;
- -- name: GetUsageByDayOfWeek :many
- SELECT
- CAST(strftime('%w', created_at, 'unixepoch') AS INTEGER) as day_of_week,
- COUNT(*) as session_count,
- SUM(prompt_tokens) as prompt_tokens,
- SUM(completion_tokens) as completion_tokens
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY day_of_week
- ORDER BY day_of_week;
- -- name: GetTotalStats :one
- SELECT
- COUNT(*) as total_sessions,
- COALESCE(SUM(prompt_tokens), 0) as total_prompt_tokens,
- COALESCE(SUM(completion_tokens), 0) as total_completion_tokens,
- COALESCE(SUM(cost), 0) as total_cost,
- COALESCE(SUM(message_count), 0) as total_messages,
- COALESCE(AVG(prompt_tokens + completion_tokens), 0) as avg_tokens_per_session,
- COALESCE(AVG(message_count), 0) as avg_messages_per_session
- FROM sessions
- WHERE parent_session_id IS NULL;
- -- name: GetRecentActivity :many
- SELECT
- date(created_at, 'unixepoch') as day,
- COUNT(*) as session_count,
- SUM(prompt_tokens + completion_tokens) as total_tokens,
- SUM(cost) as cost
- FROM sessions
- WHERE parent_session_id IS NULL
- AND created_at >= strftime('%s', 'now', '-30 days')
- GROUP BY date(created_at, 'unixepoch')
- ORDER BY day ASC;
- -- name: GetAverageResponseTime :one
- SELECT
- CAST(COALESCE(AVG(finished_at - created_at), 0) AS INTEGER) as avg_response_seconds
- FROM messages
- WHERE role = 'assistant'
- AND finished_at IS NOT NULL
- AND finished_at > created_at;
- -- name: GetToolUsage :many
- SELECT
- json_extract(value, '$.data.name') as tool_name,
- COUNT(*) as call_count
- FROM messages, json_each(parts)
- WHERE json_extract(value, '$.type') = 'tool_call'
- AND json_extract(value, '$.data.name') IS NOT NULL
- GROUP BY tool_name
- ORDER BY call_count DESC;
- -- name: GetHourDayHeatmap :many
- SELECT
- CAST(strftime('%w', created_at, 'unixepoch') AS INTEGER) as day_of_week,
- CAST(strftime('%H', created_at, 'unixepoch') AS INTEGER) as hour,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY day_of_week, hour
- ORDER BY day_of_week, hour;
|