You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询报错1055:求胜场超平均的球队信息语句问题排查

问题解决:筛选胜场高于平均的球队

错误翻译

错误代码:1055。SELECT列表中的第2个表达式不在GROUP BY子句中,并且包含未聚合的列'comp3421.mlb_team.wins',该列在功能上不依赖于GROUP BY子句中的列。

问题分析

你的SQL存在两处核心问题:

  • 语法违规:MySQL开启ONLY_FULL_GROUP_BY模式时,SELECT中的非聚合列必须出现在GROUP BY子句中。你选中了mlb_team.wins但未将其加入GROUP BY,因此触发1055错误。
  • 逻辑错误:按球队名称分组后,AVG(mlb_team.wins)计算的是单支球队自身的胜场平均值(单条记录的平均值就是其自身胜场数),导致HAVING条件永远不成立,完全达不到“筛选胜场高于所有球队平均”的需求。

正确SQL写法

方法一:子查询计算全局平均(兼容所有MySQL版本)

SELECT name, wins
FROM mlb_team
WHERE wins > (SELECT AVG(wins) FROM mlb_team)
ORDER BY wins DESC;

方法二:窗口函数计算全局平均(MySQL 8.0+适用)

SELECT name, wins
FROM (
    SELECT 
        name, 
        wins,
        AVG(wins) OVER() AS avg_total_wins
    FROM mlb_team
) AS team_stats
WHERE wins > avg_total_wins
ORDER BY wins DESC;

说明

两种写法均能实现需求:先计算所有球队的全局平均胜场,筛选出胜场高于该值的球队,最后按胜场数降序排列。方法二更简洁直观,适合支持窗口函数的高版本MySQL。

内容的提问来源于stack exchange,提问作者Coding123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:25:25