如何对单列求和后按求和列分组?附数据表及预期结果示例
实现单列全局求和并填充到每行的方法
你需要的是计算整列的总和,然后将该总和作为新列的值填充到每一行中,不需要按列分组(分组会聚合行数据,不符合你保留原行的需求)。以下是几种主流数据库的实现方式:
MySQL/MariaDB
两种写法任选其一,窗口函数需MySQL 8.0及以上版本支持:-- 子查询方式 SELECT `Col A`, (SELECT SUM(`Col A`) FROM your_table) AS `Col B` FROM your_table; -- 窗口函数方式 SELECT `Col A`, SUM(`Col A`) OVER() AS `Col B` FROM your_table;SQL Server
-- 子查询方式 SELECT [Col A], (SELECT SUM([Col A]) FROM your_table) AS [Col B] FROM your_table; -- 窗口函数方式 SELECT [Col A], SUM([Col A]) OVER() AS [Col B] FROM your_table;PostgreSQL
-- 子查询方式 SELECT "Col A", (SELECT SUM("Col A") FROM your_table) AS "Col B" FROM your_table; -- 窗口函数方式 SELECT "Col A", SUM("Col A") OVER() AS "Col B" FROM your_table;
说明
- 子查询方式:先单独计算整列的总和,再将该值与原表所有行关联,实现每行填充总和。
- 窗口函数
SUM() OVER():不带分区条件时,会计算整个结果集的总和,自动将该值填充到每一行的新列中。
内容的提问来源于stack exchange,提问作者Mohith Karanth
相关产品推荐
相关产品推荐

