请编写一条 SQL 查询语句,统计每个用户名的平均访问时长,并筛选出平均访问时长大于 100 秒的用户名,并输出这些用户名及其平均访问时长。
考察说明
考查 SQL 分组聚合与 HAVING 过滤的基本用法
回答思路
- 【回答框架 1】核心是使用 GROUP BY 按用户名分组,配合 AVG 聚合函数计算每个用户的平均访问时长。
- 【回答框架 2】使用 HAVING 子句对分组后的聚合结果进行过滤,筛选出平均访问时长超过 100 秒的用户名。
- 【回答框架 3】SELECT 子句应包含用户名和平均访问时长,并为平均访问时长起一个别名,如 avg_duration。
- 【回答框架 4】若原表结构含多列,需明确时长字段,本例假设为 duration_seconds。
- 【关键点 1】GROUP BY 按用户名分组
- 【关键点 2】AVG(duration_seconds) 计算平均时长
- 【关键点 3】HAVING AVG(duration_seconds) > 100 过滤分组
- 【易错点 1】不可在 WHERE 子句中使用聚合函数,需使用 HAVING
- 【易错点 2】SELECT 中非聚合列必须包含在 GROUP BY 中
- 【易错点 3】注意数据类型,时长字段需为数值类型