我有下面的表
姓名 | 瓦尔 | 身份证 | 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
如何像上面的输出一样重新获取所有行?
GROUP BY
语句应列出SELECT
中的非聚合列。
看起来您想对
NAME
和 SIG
进行分组,因此执行此操作的查询将是:
select NAME, sum(val), SIG
from data
group by NAME, SIG
查看dbfiddle