diff --git a/views/events_chart.sql b/views/events_chart.sql new file mode 100644 index 0000000..9729d2d --- /dev/null +++ b/views/events_chart.sql @@ -0,0 +1,33 @@ +CREATE OR REPLACE VIEW events_chart AS +WITH x AS ( + SELECT + app.get_app_id() AS app_id, + app.get_item('$EVENT_ID') AS event_id, + app.get_item('$USER_ID') AS user_id, + TRUNC(app.get_date_item('G_TODAY')) AS today + FROM users u + WHERE u.user_id = app.get_user_id() +), +z AS ( + SELECT + LEVEL AS bucket_id, + TRUNC(SYSDATE) + NUMTODSINTERVAL((LEVEL - 1) * 10, 'MINUTE') AS start_at, + TRUNC(SYSDATE) + NUMTODSINTERVAL( LEVEL * 10, 'MINUTE') AS end_at + FROM DUAL + CONNECT BY LEVEL <= (1440 / 10) +) +SELECT + z.bucket_id, + TO_CHAR(z.start_at, 'HH24:MI') AS chart_label, + NULLIF(COUNT(e.event_id), 0) AS count_events +FROM z +CROSS JOIN x +LEFT JOIN logs_events e + ON e.app_id = x.app_id + AND e.created_at >= x.today + AND e.created_at < x.today + 1 + AND e.event_id = NVL(x.event_id, e.event_id) + AND e.user_id = NVL(x.user_id, e.user_id) + AND z.bucket_id = app.get_time_bucket(e.created_at, 10) +GROUP BY z.bucket_id, TO_CHAR(z.start_at, 'HH24:MI'); +