SQL面试题更新 2026-08-05

请写出一个 SQL 查询,用于统计 2024 年 7 月期间每个页面的总访问次数,并要求结果按照访问次数从高到低排序。

编码实现SQL

考察说明

考查对日期范围过滤、分组聚合和排序的 SQL 基础能力。

回答思路

  1. 【回答框架 1】使用 GROUP BY 对页面进行分组,在 WHERE 子句中用日期条件过滤出 2024 年 7 月的数据,例如访问时间字段在 '2024-07-01' 和 '2024-07-31' 之间。
  2. 【回答框架 2】在 SELECT 中同时输出页面字段和 COUNT(*) 作为总访问次数,注意 COUNT(*) 统计行数,若访问记录有重复,需根据业务决定是否用 COUNT(DISTINCT) 去重,但通常指总访问量默认是计数所有记录。
  3. 【回答框架 3】最后使用 ORDER BY 对访问次数列降序排列,语法为 ORDER BY 访问次数 DESC。
  4. 【回答框架 4】若访问时间字段含有时分秒,日期范围应包含 7 月 31 日全天,例如使用 < '2024-08-01' 或 <= '2024-07-31 23:59:59',避免遗漏当天数据。
  5. 【关键点 1】GROUP BY 分组字段与 SELECT 中的非聚合字段一致
  6. 【关键点 2】日期过滤使用范围条件,注意边界时间
  7. 【关键点 3】ORDER BY 降序用 DESC
  8. 【易错点 1】若直接写 BETWEEN '2024-07-01' AND '2024-07-31',可能遗漏 7 月 31 日的时间部分,建议使用 < '2024-08-01'
  9. 【易错点 2】COUNT(1) 与 COUNT(*) 等价,但 COUNT(列名) 不统计 NULL 行,需根据列情况选择