In PostgreSQL die SUM()
Funktion berechnet die Summe der Nicht-Null-Eingabewerte und gibt das Ergebnis zurück.
Mit anderen Worten, es addiert Zahlen und gibt das Ergebnis zurück.
Beispiel
Hier ist ein kurzes Beispiel, um zu demonstrieren, wie es funktioniert:
SELECT SUM(amount)
FROM payment;
Ergebnis:
67416.51
In diesem Fall amount
ist eine Spalte in der payment
Tisch.
Um dem etwas mehr Kontext zu geben, hier ein Schnappschuss der Tabelle:
+------------+-------------+----------+-----------+--------+----------------------------+ | 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 | ...
Wir können den amount
sehen Spalte, die wir in unserem Beispiel addiert haben.
Die Tabelle enthält viel mehr Daten als das, aber dies zeigt Ihnen eine Momentaufnahme der Werte, die wir addiert haben.
Gefilterte Ergebnisse
Die SUM()
Die Funktion arbeitet mit den von der Abfrage zurückgegebenen Zeilen. Wenn Sie also die Ergebnisse filtern, das Ergebnis von SUM()
wird das widerspiegeln.
Lassen Sie uns die Ergebnisse filtern:
SELECT SUM(amount)
FROM payment
WHERE customer_id = 269;
Ergebnis:
129.70
Diesmal haben wir also die Summe aller von Kunde 269 bezahlten Beträge.
Der DISTINCT
Schlüsselwort
Sie können den DISTINCT
verwenden Stichwort mit SUM()
nur unterschiedliche Werte zu berechnen. Das heißt, wenn doppelte Werte vorhanden sind, werden sie als ein Wert behandelt.
Beispiel:
SELECT
SUM(amount) AS "All",
SUM(DISTINCT amount) AS "Distinct"
FROM payment;
Ergebnis:
+----------+----------+ | All | Distinct | +----------+----------+ | 67416.51 | 116.75 | +----------+----------+
Dieses Beispiel vergleicht die Ergebnisse von DISTINCT
Option gegen das Weglassen.
In diesem Fall gibt es einen sehr großen Unterschied, was darauf hindeutet, dass es in dieser Spalte viele doppelte Werte gibt.
Um dies zu überprüfen, können wir die unterschiedlichen Werte wie folgt ausgeben:
SELECT DISTINCT amount
FROM payment;
Ergebnis:
+--------+ | 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)
Unser Beispiel hat also all diese unterschiedlichen Werte addiert.