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

如何修改SQL分组求和查询得到全部分组总分 可使用哪些窗口函数

实现方案

可以通过窗口函数完成需求,无需额外关联其他表,修改后的查询语句如下:

SELECT 
  player, 
  SUM(score) AS sum_score,
  SUM(SUM(score)) OVER() AS total_score
FROM game
GROUP BY player;

逻辑说明

窗口函数的执行顺序晚于GROUP BY分组聚合,这里OVER()没有指定分区、排序规则,会把整个分组后的结果集作为唯一窗口计算总和,刚好得到所有玩家总分之和766。

如果你的数据库不支持嵌套聚合的窗口函数写法,也可以用子查询包裹原有逻辑,兼容性更强:

SELECT 
  player,
  sum_score,
  SUM(sum_score) OVER() AS total_score
FROM (
  SELECT player, SUM(score) AS sum_score
  FROM game
  GROUP BY player
) AS player_score

执行后得到的结果如下:

Playersum_scoretotal_score
John256766
Tom366766
Lucy144766

如果需要直接计算占比,可以直接在查询中新增对应列,示例如下:

SELECT 
  player, 
  SUM(score) AS sum_score,
  SUM(SUM(score)) OVER() AS total_score,
  ROUND(SUM(score) * 100.0 / SUM(SUM(score)) OVER(), 2) AS score_rate
FROM game
GROUP BY player;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:06:04