SQL面试题更新 2026-08-05

请写出一条 SQL 语句,用于从网站访问记录中统计 2024 年每个用户的访问次数,并返回访问次数排名前五的用户名及其访问次数,并按访问次数降序排列。

编码实现技术原理SQL

考察说明

考查 SQL 的分组聚合、排序与 Top-N 查询能力。

回答思路

  1. 【回答框架 1】SQL 查询的核心是利用 GROUP BY 按用户分组,使用 COUNT(*) 统计访问次数,然后按次数排序并限制输出前五名。
  2. 【回答框架 2】若数据量较大,可使用窗口函数 ROW_NUMBER() 或 DENSE_RANK() 按访问次数排名,再筛选排名小于等于 5,便于处理并列情况。
  3. 【回答框架 3】若数据库支持 LIMIT 子句,可直接使用 ORDER BY 访问次数 DESC LIMIT 5;否则可用 TOP 5 或 FETCH FIRST 5 ROWS ONLY。
  4. 【回答框架 4】需考虑时间过滤条件:访问时间在 2024-01-01 至 2024-12-31 之间,使用 BETWEEN 或 >= 和 < 来包含整个年份。
  5. 【关键点 1】使用 GROUP BY user_id 和 COUNT(*) 统计访问次数。
  6. 【关键点 2】使用 ORDER BY 访问次数 DESC 排序。
  7. 【关键点 3】使用 LIMIT 5 或等效语法限制返回前五名。
  8. 【关键点 4】时间范围过滤使用 '2024-01-01' 至 '2024-12-31'。
  9. 【易错点 1】若未使用 GROUP BY 正确分组,会导致统计错误。
  10. 【易错点 2】时间范围过滤时,必须包含 2024-12-31 的数据,建议使用 < '2025-01-01'。
  11. 【易错点 3】若存在并列排名,纯 LIMIT 可能遗漏并列第五名,需根据题目要求处理。