仪表盘报告 - 用户资料浏览量

这是用户个人资料浏览量的仪表板报告的 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
2 个赞