SQL分组求和需求:按Col3分组并每行显示组内Col1总和
按分组列显示组内总和并保留所有行的SQL实现方法
原表数据
Col1 Col2 Col3 2 A A 3 B A 4 C A 4 D B 5 E B 6 F B
期望输出
Col1 Col2 Col3 9 A A 9 B A 9 C A 15 D B 15 E B 15 F B
实现SQL语句
SELECT SUM(Col1) OVER(PARTITION BY Col3) AS Col1, Col2, Col3 FROM 你的表名;
说明
- 用
SUM() OVER(PARTITION BY Col3)窗口函数,会按Col3分组计算每组Col1的总和,同时保留原表所有行,完全匹配需求。 - 之前用GROUP BY出错是因为GROUP BY会把同一分组的行聚合为一行,导致Col2的多条记录丢失;而窗口函数是在原表每一行的上下文里计算分组聚合值,不会改变原表的行数结构。
内容的提问来源于stack exchange,提问作者VM217
相关产品推荐
相关产品推荐

