对列中的值求和,但显示分组后的所有行

问题描述 投票:0回答:1

我有下面的

姓名 瓦尔 身份证 SIG
能源部 4000 1 0
能源部 5000 8 0
乔恩 8000 9 1
乔恩 5000 9 0
能源部 1000 4 0

我需要按列

NAME
SIG
进行分组,并创建另一列
SUMVAL
,其 SUM 由一组
NAME
SIG
值获得,如上例所示,我们有三行,名称为 DOE并且SIG值为0

因此在初始分组后,输出将如下所示,DOE 将有一条记录,JON 将有两条具有两个 SIG 值的记录

姓名 总和 SIG
能源部 10000 0
乔恩 8000 1
乔恩 5000 0

我能够获得上面的输出,但是我想要下面的输出,其中我也需要获取其他行的 SUMVAL 分布并显示包含所有记录的完整视图

姓名 总和 身份证 SIG
能源部 1000 1 0
能源部 1000 8 0
乔恩 8000 9 1
乔恩 5000 9 0
能源部 1000 4 0

我尝试了下面的命令并完成了一半,但无法让其余部分工作

select sum(VAL) as SUMVAL,ID
GROUP BY SIG,NAME 

如何像上面的输出一样重新获取所有行?

mysql
1个回答
0
投票

GROUP BY
语句应列出
SELECT
中的非聚合列。

看起来您想对

NAME
SIG
进行分组,因此执行此操作的查询将是:

select NAME, sum(val), SIG
from data
group by NAME, SIG

查看dbfiddle

© www.soinside.com 2019 - 2024. All rights reserved.