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

SQL Server如何按GameID求和最大值?求纯SQL实现方案

实现需求的纯SQL方案

当然可以用纯SQL实现你想要的结果!我们可以通过两步分组聚合来完成这个逻辑:先按游戏ID分组取每个用户在该游戏下的最高得分,再对用户维度汇总游戏数量和最高得分的总和。

具体SQL代码(SQL Server适用)

WITH GameMaxScores AS (
    SELECT 
        GameID,
        UsrRegID,
        MAX(Score_User) AS Max_Score_User
    FROM 
        YourTableName  -- 替换成你的实际表名
    GROUP BY 
        GameID, UsrRegID
)
SELECT 
    COUNT(DISTINCT GameID) AS Distinct_Count_GameID,
    UsrRegID,
    SUM(Max_Score_User) AS Score_User
FROM 
    GameMaxScores
GROUP BY 
    UsrRegID;

逻辑解释

  1. CTE部分(GameMaxScores):先按GameID和UsrRegID分组,计算每个用户在每款游戏中的最高得分Max_Score_User。这一步就得到了每个游戏对应的用户最高分数,比如GameID=281的最大值是3,GameID=282是1,GameID=283是3。
  2. 外层查询:对UsrRegID分组,用COUNT(DISTINCT GameID)统计用户参与的不同游戏数量,用SUM(Max_Score_User)把每个游戏的最高得分加总,正好得到你要的7(3+1+3)。

如果你的数据量不大,也可以用子查询替代CTE,效果完全一致:

SELECT 
    COUNT(DISTINCT GameID) AS Distinct_Count_GameID,
    UsrRegID,
    SUM(Max_Score_User) AS Score_User
FROM (
    SELECT 
        GameID,
        UsrRegID,
        MAX(Score_User) AS Max_Score_User
    FROM 
        YourTableName
    GROUP BY 
        GameID, UsrRegID
) AS SubQuery
GROUP BY 
    UsrRegID;

内容的提问来源于stack exchange,提问作者Ye.s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:07:34