In PostgreSQL, il SUM()
La funzione calcola la somma dei valori di input non nulli e restituisce il risultato.
In altre parole, aggiunge numeri e restituisce il risultato.
Esempio
Ecco un rapido esempio per dimostrare come funziona:
SELECT SUM(amount)
FROM payment;
Risultato:
67416.51
In questo caso, amount
è una colonna nel payment
tavolo.
Per dare un po' più di contesto, ecco un'istantanea della tabella:
+------------+-------------+----------+-----------+--------+----------------------------+ | payment_id | customer_id | staff_id | rental_id | amount | payment_date | +------------+-------------+----------+-----------+--------+----------------------------+ | 16050 | 269 | 2 | 7 | 1.99 | 2017-01-24 21:40:19.996577 | | 16051 | 269 | 1 | 98 | 0.99 | 2017-01-25 15:16:50.996577 | | 16052 | 269 | 2 | 678 | 6.99 | 2017-01-28 21:44:14.996577 | | 16053 | 269 | 2 | 703 | 0.99 | 2017-01-29 00:58:02.996577 | | 16054 | 269 | 1 | 750 | 4.99 | 2017-01-29 08:10:06.996577 | | 16055 | 269 | 2 | 1099 | 2.99 | 2017-01-31 12:23:14.996577 | | 16056 | 270 | 1 | 193 | 1.99 | 2017-01-26 05:10:14.996577 | | 16057 | 270 | 1 | 1040 | 4.99 | 2017-01-31 04:03:42.996577 | | 16058 | 271 | 1 | 1096 | 8.99 | 2017-01-31 11:59:15.996577 | ...
Possiamo vedere l'amount
colonna che abbiamo sommato nel nostro esempio.
La tabella contiene molti più dati, ma questo mostra un'istantanea dei valori che abbiamo sommato.
Risultati filtrati
Il SUM()
La funzione opera sulle righe restituite dalla query. Quindi, se filtri i risultati, il risultato di SUM()
lo rifletterà.
Filtra i risultati:
SELECT SUM(amount)
FROM payment
WHERE customer_id = 269;
Risultato:
129.70
Quindi questa volta abbiamo ottenuto la somma di tutti gli importi pagati dal cliente 269.
Il DISTINCT
Parola chiave
Puoi usare il DISTINCT
parola chiave con SUM()
calcolare solo valori distinti. Cioè, se sono presenti valori duplicati, vengono trattati come un valore.
Esempio:
SELECT
SUM(amount) AS "All",
SUM(DISTINCT amount) AS "Distinct"
FROM payment;
Risultato:
+----------+----------+ | All | Distinct | +----------+----------+ | 67416.51 | 116.75 | +----------+----------+
Questo esempio confronta i risultati di DISTINCT
possibilità di non ometterlo.
In questo caso, c'è una differenza molto grande, il che suggerisce che ci sono molti valori duplicati in quella colonna.
Per verificarlo, possiamo emettere i valori distinti come questo:
SELECT DISTINCT amount
FROM payment;
Risultato:
+--------+ | amount | +--------+ | 1.99 | | 3.98 | | 7.99 | | 5.99 | | 10.99 | | 2.99 | | 8.97 | | 8.99 | | 3.99 | | 9.98 | | 11.99 | | 7.98 | | 6.99 | | 0.00 | | 4.99 | | 5.98 | | 0.99 | | 1.98 | | 9.99 | +--------+ (19 rows)
Quindi il nostro esempio ha sommato tutti quei valori distinti.