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

SQL查询中W列与max(w)列结果相同的问题修复方案

问题原因

你在GROUP BY里同时包含了season和w,这会让SQL把同一个赛季里胜场数相同的记录归为一组。每组内的w值都是一致的,所以MAX(w)计算的就是当前组的w,自然和w列结果完全相同,根本没算出整个赛季的最高胜场。

解决方案

方案1:使用窗口函数(推荐,简洁高效)

窗口函数可以在不分组的情况下,按赛季计算全局最高胜场,直接和每一行的球队胜场关联:

SELECT 
    season,
    w AS [球队胜场数],
    MAX(w) OVER (PARTITION BY season) AS [赛季最高胜场数]
FROM [dbo].[Team Summaries]
WHERE w IS NOT NULL
ORDER BY season

PARTITION BY season会让MAX(w)只在当前赛季范围内计算最大值,每一行都会带上对应赛季的最高胜场数。

方案2:子查询关联(兼容老版本SQL)

先通过子查询算出每个赛季的最高胜场,再和原表按赛季关联:

SELECT 
    ts.season,
    ts.w AS [球队胜场数],
    ms.max_w AS [赛季最高胜场数]
FROM [dbo].[Team Summaries] ts
JOIN (
    SELECT season, MAX(w) AS max_w
    FROM [dbo].[Team Summaries]
    WHERE w IS NOT NULL
    GROUP BY season
) ms ON ts.season = ms.season
WHERE ts.w IS NOT NULL
ORDER BY ts.season

子查询ms先得到每个赛季的最高胜场,再通过JOIN把原表的球队胜场和对应赛季的最高胜场匹配起来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:52:04