PostgreSQL中对相同Plan No.的Weight求和并新增totalwight列的实现
实现需求的PostgreSQL查询语句
你可以通过两种方式实现这个需求,其中窗口函数是最简洁高效的方案:
方法一:窗口函数(推荐)
利用SUM()窗口函数按Plan No.分组计算总和,每条记录都会展示对应分组的重量总和:
SELECT "Plan No.", Weight, SUM(Weight) OVER (PARTITION BY "Plan No.") AS totalwight FROM plan;
说明
PARTITION BY "Plan No."表示将数据按Plan No.字段分组SUM(Weight) OVER(...)会计算每个分组内Weight的总和,并将该值填充到对应分组每条记录的totalwight列中
方法二:子查询关联
如果你的PostgreSQL版本较低(不支持窗口函数),可以先通过子查询计算每个Plan No.的总重量,再和原表关联:
SELECT p."Plan No.", p.Weight, t.totalwight FROM plan p JOIN ( SELECT "Plan No.", SUM(Weight) AS totalwight FROM plan GROUP BY "Plan No." ) t ON p."Plan No." = t."Plan No.";
两种方式都能得到你期望的查询结果,窗口函数的执行效率更高,代码也更简洁。
内容的提问来源于stack exchange,提问作者Nur Jayah
相关产品推荐
相关产品推荐

