2013-03-30 22 views
16

Chciałbym wiedzieć, czy istnieje sposób, aby obliczyć sumę wielu kolumn w PostgreSQL.Jak obliczyć sumę wielu kolumn w PostgreSQL

Mam tabelę z więcej niż 80 kolumnami i muszę napisać zapytanie, które dodaje każdą wartość z każdej kolumny.

Próbowałem z SUM (col1, col2, col3 itp.), Ale to nie zadziałało.

+1

Masz na myśli sumę na wiersz lub całkowitą sumę dla wszystkich wierszy? –

+0

Mam na myśli sumę w wierszu. – Psyche

+0

Chciałbym tylko wyjaśnić, że nie miałeś na myśli "Chcę podsumować całą kolumnę A, a następnie dodać ją do sumy kolumny B", miałeś na myśli "W każdym wierszu chcę podsumować wartość w kolumnie A i wartość w kolumnie B i zapisz ją w wyniku ". – Noumenon

Odpowiedz

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

Próbowałem, ale są kolumny, w których nie ma wartości (NULL), a wynik końcowy jest NULL, więc nie jest dobrze. – Psyche

+0

Odpowiedź została zmodyfikowana, aby to uwzględnić, i komentarz, którego szukasz dla sumy wiersza. – qqx

+1

Działa z COALESCE(), dziękuję! – Psyche

29

To zależy od sposobu zsumowania wartości. Jeśli poprawnie przeczytam twoje pytanie, szukasz drugiego WYBORU z tego przykładu:

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

Dzięki za wyczerpującą odpowiedź. Podobnie jak komentarze w drugiej odpowiedzi, miałem problemy z SUM, zwracając NULL, więc tutaj jest poprawka, jeśli ktoś potrzebuje: SELECT GREATEST (0, SUM (a + b)) Z yourtable; – Lorenzo

Powiązane problemy