sql >> Databasteknik >  >> RDS >> PostgreSQL

SUM() Funktion i PostgreSQL

I PostgreSQL, SUM() funktionen beräknar summan av de icke-null-inmatade värdena och returnerar resultatet.

Med andra ord, det lägger till siffror och returnerar resultatet.

Exempel

Här är ett snabbt exempel för att visa hur det fungerar:

SELECT SUM(amount) 
FROM payment;

Resultat:

67416.51

I det här fallet, amount är en kolumn i payment tabell.

För att ge detta lite mer sammanhang, här är en ögonblicksbild av 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 kolumn som vi lagt till i vårt exempel.

Tabellen innehåller mycket mer data än så, men den här visar dig en ögonblicksbild av värdena som vi lagt till.

Filtrerade resultat

SUM() funktionen fungerar på raderna som returneras av frågan. Så om du filtrerar resultaten blir resultatet av SUM() kommer att återspegla det.

Låt oss filtrera resultaten:

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

Resultat:

129.70

Så denna gång fick vi summan av alla belopp som betalats av kund 269.

DISTINCT Nyckelord

Du kan använda DISTINCT nyckelord med SUM() för att endast beräkna distinkta värden. Det vill säga, om det finns några dubbletter av värden, behandlas de som ett värde.

Exempel:

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

Resultat:

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

Det här exemplet jämför resultaten av DISTINCT alternativ mot att utelämna den.

I det här fallet finns det en mycket stor skillnad, vilket tyder på att det finns många dubbletter av värden i den kolumnen.

För att verifiera detta kan vi mata ut de distinkta värdena så här:

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å vårt exempel lade ihop alla dessa distinkta värden.


  1. Vilken är den perfekta verktygslådan för PL/SQL-utveckling?

  2. söker programmässigt efter öppen anslutning i JDBC

  3. Hur timeofday() fungerar i PostgreSQL

  4. 2 funktioner som hämtar dagen, månaden och året från ett datum i Oracle