PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Funkcja SUM() w PostgreSQL

W PostgreSQL SUM() funkcja oblicza sumę niezerowych wartości wejściowych i zwraca wynik.

Innymi słowy, dodaje liczby i zwraca wynik.

Przykład

Oto krótki przykład pokazujący, jak to działa:

SELECT SUM(amount) 
FROM payment;

Wynik:

67416.51

W tym przypadku amount to kolumna w payment stół.

Aby nadać temu nieco więcej kontekstu, oto migawka tabeli:

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

Widzimy amount kolumna, którą dodaliśmy w naszym przykładzie.

Tabela zawiera znacznie więcej danych, ale to pokazuje migawkę wartości, które dodaliśmy.

Przefiltrowane wyniki

SUM() funkcja działa na wierszach zwróconych przez zapytanie. Więc jeśli filtrujesz wyniki, wynik SUM() odzwierciedli to.

Filtrujmy wyniki:

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

Wynik:

129.70

Więc tym razem otrzymaliśmy sumę wszystkich kwot zapłaconych przez klienta 269.

DISTINCT Słowo kluczowe

Możesz użyć DISTINCT słowo kluczowe z SUM() aby obliczyć tylko różne wartości. Oznacza to, że jeśli istnieją jakiekolwiek zduplikowane wartości, są one traktowane jako jedna wartość.

Przykład:

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

Wynik:

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

Ten przykład porównuje wyniki DISTINCT opcja przeciwko pominięciu tego.

W tym przypadku występuje bardzo duża różnica, co sugeruje, że w tej kolumnie jest wiele zduplikowanych wartości.

Aby to zweryfikować, możemy wyprowadzić różne wartości w następujący sposób:

SELECT DISTINCT amount
FROM payment;

Wynik:

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

Więc nasz przykład dodał wszystkie te odrębne wartości.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wdrażanie Django + Python 3 + PostgreSQL do AWS Elastic Beanstalk

  2. Samodzielne dostarczanie kont użytkowników w PostgreSQL za pośrednictwem nieuprzywilejowanego dostępu anonimowego

  3. Błąd:kolumna nie istnieje

  4. Przyznaj wszystko w określonym schemacie w bazie danych do roli grupowej w PostgreSQL

  5. Średnia ruchoma na podstawie znaczników czasu w PostgreSQL