如何按NAME和SIG分组求和后展示所有原始数据行?
解决方案
要保留所有原始数据行并为每行填充对应分组的VAL总和,你需要用窗口函数替代普通的GROUP BY聚合——普通GROUP BY会合并分组行,而窗口函数能在不减少行数的前提下计算分组聚合值。
示例SQL语句
SELECT NAME, VAL, ID, SIG, SUM(VAL) OVER (PARTITION BY NAME, SIG) AS SUMVAL FROM 你的数据表名;
关键说明
SUM(VAL) OVER (PARTITION BY NAME, SIG):这是窗口函数的核心部分,PARTITION BY NAME, SIG指定按NAME和SIG分组,SUM(VAL)计算每个分组内VAL的总和,最终会把这个总和填充到该分组的每一行中。- 执行这个查询后,会返回所有原始行的完整数据,同时新增SUMVAL字段,每行的SUMVAL就是其所属NAME+SIG分组的VAL总和。
内容的提问来源于stack exchange,提问作者Tim-Timer
相关产品推荐
相关产品推荐

