Files
beacon-server/db/queries/observer_activity_summary.sql
T

14 lines
606 B
SQL

-- name: GetObserverActivityLiveSummary :one
-- Two indexed ranges, bounded to one observer; no legacy presence counters.
WITH latest AS (
SELECT heard_at FROM packet_observations
WHERE observer_id = @observer_id::uuid AND heard_at <= @generated_at::timestamptz
ORDER BY heard_at DESC LIMIT 1
), hourly AS (
SELECT COUNT(*)::bigint AS n FROM packet_observations
WHERE observer_id = @observer_id::uuid
AND heard_at >= @hour_start::timestamptz AND heard_at < @hour_end::timestamptz
)
SELECT (SELECT heard_at FROM latest)::timestamptz AS latest_recorded_at,
hourly.n AS last_complete_hour FROM hourly;