sql >> Database >  >> RDS >> PostgreSQL

SUM() Functie in PostgreSQL

In PostgreSQL is de SUM() functie berekent de som van de niet-null invoerwaarden en retourneert het resultaat.

Met andere woorden, het telt getallen op en geeft het resultaat terug.

Voorbeeld

Hier is een snel voorbeeld om te laten zien hoe het werkt:

SELECT SUM(amount) 
FROM payment;

Resultaat:

67416.51

In dit geval amount is een kolom in de payment tafel.

Om dit wat meer context te geven, is hier een momentopname van de tabel:

+------------+-------------+----------+-----------+--------+----------------------------+
| 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 |
...

We kunnen het amount zien kolom die we in ons voorbeeld hebben opgeteld.

De tabel bevat veel meer gegevens dan dat, maar dit toont u een momentopname van de waarden die we hebben opgeteld.

Gefilterde resultaten

De SUM() functie werkt op de rijen die door de query worden geretourneerd. Dus als u de resultaten filtert, wordt het resultaat van SUM() zal dat weerspiegelen.

Laten we de resultaten filteren:

SELECT SUM(amount) 
FROM payment
WHERE customer_id = 269;

Resultaat:

129.70

Dus deze keer kregen we de som van alle bedragen betaald door klant 269.

De DISTINCT Zoekwoord

U kunt de DISTINCT . gebruiken zoekwoord met SUM() om alleen verschillende waarden te berekenen. Dat wil zeggen, als er dubbele waarden zijn, worden deze als één waarde behandeld.

Voorbeeld:

SELECT 
    SUM(amount) AS "All",
    SUM(DISTINCT amount) AS "Distinct"
FROM payment;

Resultaat:

+----------+----------+
|   All    | Distinct |
+----------+----------+
| 67416.51 |   116.75 |
+----------+----------+

Dit voorbeeld vergelijkt de resultaten van de DISTINCT optie tegen weglaten.

In dit geval is er een zeer groot verschil, wat suggereert dat er veel dubbele waarden in die kolom staan.

Om dit te verifiëren, kunnen we de verschillende waarden als volgt uitvoeren:

SELECT DISTINCT amount
FROM payment;

Resultaat:

+--------+
| 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)

Dus ons voorbeeld heeft al die verschillende waarden bij elkaar opgeteld.


  1. Overstappen van MySQL naar PostgreSQL - tips, tricks en gotchas?

  2. MySQL zoeken en tekst in een veld vervangen

  3. SEC_CASE_SENSTIVE_LOGON in 12c

  4. Transacties werken niet voor mijn MySQL DB