SQL查询无输出无报错排查:筛选后卫传球均值超150的球队
SQL查询问题排查与修正
问题点分析
原查询存在三个核心错误:
- 聚合函数不能用于WHERE子句:
avg(passes)是聚合函数,WHERE用于筛选原始行,无法识别聚合计算结果,需要用HAVING子句来筛选分组后的聚合结果。 - 缺少GROUP BY子句:SELECT同时包含非聚合字段
team和聚合函数avg(passes),必须通过GROUP BY team按球队分组,才能计算每个球队后卫的平均传球数。 - 排序方向错误:需求要求按均值降序排列,原语句未指定
DESC,默认是升序。
修正后的SQL语句
SELECT team, AVG(passes) AS avg_passes FROM player WHERE position = 'defender' GROUP BY team HAVING AVG(passes) > 150 ORDER BY avg_passes DESC;
修正说明
- 用
GROUP BY team按球队分组,确保每个球队只返回一条平均传球数记录。 - 将聚合条件
avg(passes) > 150移到HAVING子句,筛选出平均传球数超150的球队。 - 添加
DESC实现降序排序,同时给聚合结果起别名avg_passes,让排序和字段更清晰。
内容的提问来源于stack exchange,提问作者user552259
相关产品推荐
相关产品推荐

