请写出一个 SQL 查询语句,用于统计每个用户访问过的不同页面的总次数。
考察说明
考查 SQL 中分组聚合与去重统计的组合使用能力,特别是 GROUP BY 与 COUNT(DISTINCT) 的搭配。
回答思路
- 【回答框架 1】明确目标是每个用户一行,统计其访问过的不同页面数。不同页面需要用 COUNT(DISTINCT page) 去重。
- 【回答框架 2】使用 GROUP BY user_id 对每个用户分组,SELECT 中列出 user_id 和 COUNT(DISTINCT page) 作为访问页面总数。
- 【回答框架 3】如果表名和字段名不确定,可假设表为 user_page_visits,字段为 user_id 和 page,实际使用时应替换为真实表名。
- 【回答框架 4】注意别混淆总数与总次数:本查询要求的是不同页面数,不是访问次数,因此必须用 DISTINCT 去重。
- 【回答框架 5】若需对结果排序,可按用户 ID 或页面数排序,但原题只要求查询,不强制排序。
- 【关键点 1】核心是 GROUP BY 与 COUNT(DISTINCT) 的组合
- 【关键点 2】COUNT(DISTINCT page) 统计每个用户访问的不同页面数
- 【关键点 3】按 user_id 分组输出每用户一行结果
- 【易错点 1】忘记 DISTINCT 导致统计的是访问总次数而非不同页面数
- 【易错点 2】分组合并时未指定正确的分组字段,导致统计错误
- 【易错点 3】若有 NULL 页面,COUNT DISTINCT 会忽略,需确认业务是否需要处理