这是用户个人资料浏览量的仪表板报告的 SQL 版本。
此仪表板报告可生成指定日期范围内每日用户个人资料浏览总量统计信息。
-- [params]
-- date :start_date = 2024-01-05
-- date :end_date = 2024-02-06
WITH profile_views_per_day AS (
SELECT
date_trunc('day', viewed_at) AS day,
COUNT(*) AS views
FROM user_profile_views
WHERE viewed_at >= :start_date AND viewed_at <= :end_date
GROUP BY day
)
SELECT
day::date,
views
FROM profile_views_per_day
ORDER BY day
SQL 查询说明
以下是查询工作原理的细分:
- 参数:查询接受两个参数
:start_date和:end_date,允许用户指定报告的日期范围。两个日期参数均接受YYYY-MM-DD格式的日期。 - 公用表表达式 (CTE):查询以名为
profile_views_per_day的 CTE 开始。这是一个临时结果集,我们将在主查询中使用它。 - 日期截断:在 CTE 中,
date_trunc函数用于将viewed_at时间戳截断到天。这意味着,无论个人资料何时被浏览,都将仅根据日期进行计数。 - 计算浏览量:
COUNT(*)函数计算每天的个人资料浏览量。 - 按日期范围过滤:
WHERE子句将计数限制为仅包括在查询顶部设置的:start_date和:end_date参数之间发生的浏览量。 - 分组结果:
GROUP BY子句按截断的日期对结果进行分组,以便按天汇总浏览量。 - 选择结果:主
SELECT语句从 CTE 中检索结果。它选择截断的日期(转换为日期类型)和该日的浏览量。 - 排序结果:最后,
ORDER BY子句确保结果按日期按时间顺序显示。
示例结果
| day | views |
|---|---|
| 2024-01-05 | 263 |
| 2024-01-06 | 374 |
| 2024-01-07 | 272 |
| 2024-01-08 | 409 |
| 2024-01-09 | 606 |