57

我想知道是否有一种方法可以计算 PostgreSQL 中多列的总和。

我有一个包含 80 多列的表,我必须编写一个查询来添加每列中的每个值。

我尝试使用 SUM(col1, col2, col3 etc) 但它没有用。

4

3 回答 3

95
SELECT COALESCE(col1,0) + COALESCE(col2,0)
FROM yourtable
于 2013-03-30T14:31:55.977 回答
70

这取决于您希望如何对这些值求和。如果我正确阅读了您的问题,则您正在寻找此示例中的第二个 SELECT :

template1=# SELECT * FROM yourtable ;
 a | b 
---+---
 1 | 2
 4 | 5
(2 rows)

template1=# SELECT a + b FROM yourtable ;
 ?column? 
----------
        3
        9
(2 rows)

template1=# SELECT SUM( a ), SUM( b ) FROM yourtable ;
 sum | sum 
-----+-----
   5 |   7
(1 row)

template1=# SELECT SUM( a + b ) FROM yourtable ;
 sum 
-----
  12
(1 row)

template1=# 
于 2013-03-30T14:41:29.273 回答
13

结合当前的答案并使用它来获得总和:

SELECT SUM(COALESCE(col1,0) + COALESCE(col2,0)) FROM yourtable;
于 2018-11-13T20:18:36.570 回答