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

MySQL中如何对GROUP BY分组后的求和结果再次求和?

问题描述

现有一张名为animals的表,结构与数据如下:

nameamount
cat1
cat5
horse2

已通过以下SQL按name分组计算amount的求和值:

SELECT name,SUM(amount) s FROM animals GROUP BY name;

得到结果:

names
cat6
horse2

现在需要对上述结果的s列再次求和,尝试执行以下SQL但无法运行:

SELECT SUM(s),(SELECT name, SUM(amount) s FROM animals GROUP BY name);
错误原因

你把返回多列多行的子查询直接放在SELECT列表中,而SELECT列表中的子查询必须是标量子查询(仅返回单个值),因此触发了语法错误。

正确实现方法

方法1:通过子查询先分组再求和

将分组查询作为临时表,再对其s列求和:

SELECT SUM(s) AS total_sum
FROM (
    -- 仅保留分组后的求和结果,无需name列
    SELECT SUM(amount) s 
    FROM animals 
    GROUP BY name
) AS grouped_result;

执行后会得到结果:total_sum = 8

方法2:直接求和(更高效)

实际上,分组求和后再取总和,等价于直接对原表的amount列求和(因为1+5+2 = 6+2),可以简化为:

SELECT SUM(amount) AS total_sum FROM animals;

此方法无需分组,性能更优,结果与方法1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:01:06