SQL面试题更新 2026-08-05

请写出一个 SQL 查询语句,用于统计每个用户访问过的不同页面的总次数。

编码实现SQL

考察说明

考查 SQL 中分组聚合与去重统计的组合使用能力,特别是 GROUP BY 与 COUNT(DISTINCT) 的搭配。

回答思路

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