SQL面试题更新 2026-08-05

请编写一条 SQL 查询语句,统计每个用户名的平均访问时长,并筛选出平均访问时长大于 100 秒的用户名,并输出这些用户名及其平均访问时长。

编码实现技术原理SQL

考察说明

考查 SQL 分组聚合与 HAVING 过滤的基本用法

回答思路

  1. 【回答框架 1】核心是使用 GROUP BY 按用户名分组,配合 AVG 聚合函数计算每个用户的平均访问时长。
  2. 【回答框架 2】使用 HAVING 子句对分组后的聚合结果进行过滤,筛选出平均访问时长超过 100 秒的用户名。
  3. 【回答框架 3】SELECT 子句应包含用户名和平均访问时长,并为平均访问时长起一个别名,如 avg_duration。
  4. 【回答框架 4】若原表结构含多列,需明确时长字段,本例假设为 duration_seconds。
  5. 【关键点 1】GROUP BY 按用户名分组
  6. 【关键点 2】AVG(duration_seconds) 计算平均时长
  7. 【关键点 3】HAVING AVG(duration_seconds) > 100 过滤分组
  8. 【易错点 1】不可在 WHERE 子句中使用聚合函数,需使用 HAVING
  9. 【易错点 2】SELECT 中非聚合列必须包含在 GROUP BY 中
  10. 【易错点 3】注意数据类型,时长字段需为数值类型