sql >> Databáze >  >> RDS >> PostgreSQL

Funkce SUM() v PostgreSQL

V PostgreSQL je to SUM() funkce vypočítá součet nenulových vstupních hodnot a vrátí výsledek.

Jinými slovy, sčítá čísla a vrací výsledek.

Příklad

Zde je rychlý příklad demonstrující, jak to funguje:

SELECT SUM(amount) 
FROM payment;

Výsledek:

67416.51

V tomto případě amount je sloupec v payment stůl.

Abychom tomu dodali trochu více kontextu, zde je snímek tabulky:

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

Vidíme amount sloupec, který jsme sečetli v našem příkladu.

Tabulka obsahuje mnohem více údajů, ale ukazuje vám snímek hodnot, které jsme sečetli.

Filtrované výsledky

SUM() funkce pracuje na řádcích vrácených dotazem. Pokud tedy filtrujete výsledky, výsledek SUM() to bude odrážet.

Umožňuje filtrovat výsledky:

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

Výsledek:

129.70

Tentokrát jsme tedy dostali součet všech částek zaplacených zákazníkem 269.

DISTINCT Klíčové slovo

Můžete použít DISTINCT klíčové slovo s SUM() vypočítat pouze odlišné hodnoty. To znamená, že pokud existují nějaké duplicitní hodnoty, jsou považovány za jednu hodnotu.

Příklad:

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

Výsledek:

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

Tento příklad porovnává výsledky DISTINCT možnost proti vynechání.

V tomto případě je zde velmi velký rozdíl, který naznačuje, že v tomto sloupci je mnoho duplicitních hodnot.

Abychom to ověřili, můžeme vypsat odlišné hodnoty takto:

SELECT DISTINCT amount
FROM payment;

Výsledek:

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

Náš příklad tedy sečetl všechny tyto odlišné hodnoty.


  1. Jak funguje SHOW COLLATION v MariaDB

  2. Jak najít závislosti uvnitř balíčku Oracle?

  3. 8 příkazů WP-CLI pro vyčištění a optimalizaci vašeho webu

  4. Vysvětlení operátora Oracle UNION