SQL技术问询:如何保留重复获胜队记录?已尝试HAVING子句
问题分析与解决
你的查询只返回每个获胜队一次,核心原因是误用了GROUP BY Winner和AVG()聚合函数——GROUP BY Winner会把同一支获胜队的所有比赛合并为一组,AVG()则计算该队所有获胜场次的平均分差,这直接导致单场比赛的详细记录被合并丢失。
要显示所有比赛的完整记录,不需要分组聚合,直接针对单场比赛计算分差即可:
SELECT Winner, Winner_Pts, Loser, Loser_Pts, Date, CASE WHEN (Winner_Pts - Loser_Pts) >= 14 THEN 'yes' ELSE 'no' END AS won_by_more_than_14 FROM superbowls ORDER BY Winner_Pts DESC
关键改动说明:
- 移除
GROUP BY Winner:让每条比赛记录独立被查询,不会被合并分组 - 删除
AVG()函数:直接用单场的Winner_Pts - Loser_Pts计算分差,判断单场是否满足分差≥14的条件 - 替换字符串引号:多数SQL数据库中,字符串常量用单引号更规范,字段别名无需额外引号(若需转义可使用反引号)
修改后就能返回所有比赛的完整记录,同时正确标记每场比赛的获胜分差是否达标。
内容的提问来源于stack exchange,提问作者Taylar Massengale
相关产品推荐
相关产品推荐

