This is an SQL version of the Dashboard Report for Daily Engaged Users.
The SQL report will count the number of unique users that have liked or posted on a site each day.
--[params]
-- date :start_date
-- date :end_date
SELECT 
  ua.created_at::date AS day,
  COUNT(DISTINCT ua.user_id) AS engaged_users
FROM user_actions ua
INNER JOIN topics t on t.id = ua.target_topic_id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
    AND ua.action_type IN (1, 4, 5, 12)
GROUP BY ua.created_at::date
ORDER BY ua.created_at::date ASC 
Breakdown of the Query:
- Date Parameters: The query accepts two date parameters, :start_dateand:end_date, which allow you to specify the range for the report.
- Selection: It selects the date of the action (ua.created_at::date) and counts the distinct user IDs (COUNT(DISTINCT ua.user_id)) who performed the actions, aliasing this count asengaged_users.
- Data Source: The query pulls from the user_actionstable (ua) and joins it with thetopicstable (t) to focus on actions related to topics.
- Action Types: It filters the actions to include only those with types 1, 4, 5, and 12. These action types correspond to the following specific activities:
- 1: Like
- 4: New Topic
- 15: Reply
- 12: New Private Message
 
- Grouping and Ordering: The results are grouped by the date of the action and ordered in ascending order, giving you a chronological view of the activity.
Example Results
| day | engaged_users | 
|---|---|
| 2023-01-01 | 136 | 
| 2023-01-02 | 124 | 
| 2023-01-03 | 187 | 
| 2023-01-04 | 287 | 
| 2023-01-05 | 110 | 
| 2023-01-06 | 95 | 
| 2023-01-07 | 73 | 
