PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Функция SUM() в PostgreSQL

В PostgreSQL, SUM() функцията изчислява сумата от ненулевите входни стойности и връща резултата.

С други думи, добавя числа и връща резултата.

Пример

Ето един бърз пример, за да демонстрирате как работи:

SELECT SUM(amount) 
FROM payment;

Резултат:

67416.51

В този случай amount е колона в payment маса.

За да придадете на това малко повече контекст, ето моментна снимка на таблицата:

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

Можем да видим amount колона, която добавихме в нашия пример.

Таблицата съдържа много повече данни от това, но това ви показва моментна снимка на стойностите, които сумирахме.

Филтрирани резултати

SUM() функцията работи с редовете, върнати от заявката. Така че, ако филтрирате резултатите, резултатът от SUM() ще отрази това.

Нека филтрираме резултатите:

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

Резултат:

129.70

Така че този път получихме сбора от всички суми, платени от клиент 269.

DISTINCT Ключова дума

Можете да използвате DISTINCT ключова дума с SUM() за изчисляване само на различни стойности. Тоест, ако има дублиращи се стойности, те се третират като една стойност.

Пример:

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

Резултат:

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

Този пример сравнява резултатите от DISTINCT опция срещу пропускането.

В този случай има много голяма разлика, което предполага, че има много дублиращи се стойности в тази колона.

За да проверим това, можем да изведем различни стойности по следния начин:

SELECT DISTINCT amount
FROM payment;

Резултат:

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

Така че нашият пример събра всички тези различни стойности.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Скорост на съкращаване на Postgresql

  2. PostgreSQL последователности без празнини

  3. Инструкция GROUP BY + CASE

  4. Как да зададете потребителска парола по подразбиране в PostgreSQL

  5. Най-добрите инструменти за архивиране за PostgreSQL