PostgreSQL如何对表内相同月份两列做减法生成新列
PostgreSQL同月份字段计算实现方案
你可以按month字段分组聚合实现需求:同月份下value1、value2的非0值各仅存在一条,直接对两个字段按月份求和就能得到对应的有效值,再做减法即可得到value3。
临时查询得到预期结果
SELECT SUM(value1) AS value1, SUM(value2) AS value2, month, SUM(value1) - SUM(value2) AS value3 FROM 你的实际表名 GROUP BY month ORDER BY month;
执行以上语句即可直接返回你给出的预期输出结果。
如需将value3永久存入表中
- 先给表新增
value3字段
ALTER TABLE 你的实际表名 ADD COLUMN value3 NUMERIC;
- 按月份批量更新所有行的
value3值
WITH month_calculate AS ( SELECT month, SUM(value1) - SUM(value2) AS calc_value3 FROM 你的实际表名 GROUP BY month ) UPDATE 你的实际表名 t SET value3 = mc.calc_value3 FROM month_calculate mc WHERE t.month = mc.month;
内容的提问来源于stack exchange,提问作者val ezeh
相关产品推荐
相关产品推荐

