这是“合并页面浏览量”仪表板报告的 SQL 版本。
此 SQL 报告提供 Discourse 网站上登录用户、匿名用户和爬虫每日页面浏览量的计数。
-- [params]
-- date :start_date
-- date :end_date
SELECT
ar.date::date AS "日期",
SUM(ar.count) AS "总浏览量",
SUM(CASE WHEN ar.req_type=6 THEN ar.count ELSE 0 END) AS "爬虫浏览量",
SUM(CASE WHEN ar.req_type=7 THEN ar.count ELSE 0 END) AS "登录用户浏览量",
SUM(CASE WHEN ar.req_type=8 THEN ar.count ELSE 0 END) AS "匿名用户浏览量"
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date AND :end_date
GROUP BY date
ORDER BY date
SQL 查询说明
该查询在 application_requests 表上运行,该表记录了论坛的各种请求类型。它侧重于由 req_type 值标识的三个特定请求类型:
6:爬虫浏览量7:登录用户浏览量8:匿名用户浏览量
以下是查询操作的逐步说明:
- 参数:查询接受两个参数
:start_date和:end_date,允许用户指定报告的日期范围。两个日期参数都接受YYYY-MM-DD格式的日期。 - 选择:查询选择请求的日期 (
ar.date) 并将其转换为date类型。它还计算指定范围内每天的总浏览量以及按类型(爬虫、登录用户和匿名用户)划分的浏览量明细。 - 求和:它对每种浏览类型的
count列进行求和。CASE语句用于根据req_type有条件地将计数包含在总和中。 - 过滤:
WHERE子句过滤记录,仅包括req_type值为 6、7 或 8 且日期介于指定的:start_date和:end_date之间的记录。 - 分组:查询按日期对结果进行分组,确保每天的每种浏览类型的计数都已聚合。
- 排序:结果按日期排序,以提供流量的按时间顺序视图。
示例结果
| 日期 | 总浏览量 | 爬虫浏览量 | 登录用户浏览量 | 匿名用户浏览量 |
|---|---|---|---|---|
| 2023-11-18 | 5608 | 3052 | 565 | 1928 |
| 2023-11-19 | 9207 | 6564 | 470 | 2273 |
| 2023-11-20 | 6271 | 2631 | 1016 | 2924 |

