2013-03-30 17 views
16

PostgreSQLの複数の列の合計を計算する方法があるかどうかを知りたいと思います。PostgreSQLの複数の列の合計を計算する方法

私は80列以上のテーブルを持っており、各列から各値を追加するクエリを作成する必要があります。

私はSUM(col1、col2、col3など)で試しましたが、うまくいきませんでした。

+1

合計は、すべての行の合計を意味しますか? –

+0

1行あたりの合計を意味します。 – Psyche

+0

私はちょうどあなたが「列Aのすべてを合計してからそれを列Bの合計に加算したい」という意味ではないことをさらに明確にしたいと思います。「各行で列Aの値を合計したい列Bの値を結果に格納します。 – Noumenon

答えて

30
SELECT COALESCE(col1,0) + COALESCE(col2,0) 
FROM yourtable 
+0

私はそれを試みましたが、値がない(NULL)列があり、最終結果がNULLなので、それはOKではありません。 – Psyche

+0

これを考慮に入れて回答を修正し、行ごとの合計を探しているコメント。 – qqx

+1

これはCOALESCE()で動作します、ありがとうございます! – Psyche

29

どのように値を合計したいかによって異なります。あなたの質問を正しく読んだら、この例から2番目の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=# 
+0

総合的な答えをありがとう。他の答えのコメントと同様に、私はSUMがNULLを返すのに困っていたので、誰かが必要であれば修正しています: '大丈夫(0、SUM(a + b))yourtable; – Lorenzo