sql >> Database teknologi >  >> RDS >> PostgreSQL

SUM() Funktion i PostgreSQL

I PostgreSQL er SUM() funktion beregner summen af ​​de ikke-nul-inputværdier og returnerer resultatet.

Med andre ord tilføjer den tal og returnerer resultatet.

Eksempel

Her er et hurtigt eksempel for at demonstrere, hvordan det virker:

SELECT SUM(amount) 
FROM payment;

Resultat:

67416.51

I dette tilfælde amount er en kolonne i payment bord.

For at give dette lidt mere kontekst er her et øjebliksbillede af tabellen:

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

Vi kan se amount kolonne, som vi tilføjede i vores eksempel.

Tabellen indeholder meget flere data end det, men dette viser dig et øjebliksbillede af de værdier, vi har lagt sammen.

Filtrerede resultater

SUM() funktionen fungerer på de rækker, der returneres af forespørgslen. Så hvis du filtrerer resultaterne, er resultatet af SUM() vil afspejle det.

Lad os filtrere resultaterne:

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

Resultat:

129.70

Så denne gang fik vi summen af ​​alle beløb betalt af kunde 269.

DISTINCT Søgeord

Du kan bruge DISTINCT søgeord med SUM() kun at beregne distinkte værdier. Det vil sige, at hvis der er nogen duplikerede værdier, behandles de som én værdi.

Eksempel:

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

Resultat:

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

Dette eksempel sammenligner resultaterne af DISTINCT mulighed for at udelade det.

I dette tilfælde er der en meget stor forskel, hvilket tyder på, at der er mange duplikerede værdier i den kolonne.

For at bekræfte dette kan vi udlæse de forskellige værdier som dette:

SELECT DISTINCT amount
FROM payment;

Resultat:

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

Så vores eksempel tilføjede alle disse forskellige værdier.


  1. Tjek den plads, der bruges af en tabel i SQL Server

  2. TIME_FORMAT() Eksempler – MySQL

  3. Hvorfor overhovedet bruge *DB.exec() eller forberedte sætninger i Golang?

  4. SYSDATE-funktion i Oracle