PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SUM()-Funktion in PostgreSQL

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.