PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Função SUM() no PostgreSQL


No PostgreSQL, o SUM() A função calcula a soma dos valores de entrada não nulos e retorna o resultado.

Em outras palavras, ele adiciona números e retorna o resultado.

Exemplo


Aqui está um exemplo rápido para demonstrar como funciona:
SELECT SUM(amount) 
FROM payment;

Resultado:
67416.51

Neste caso, amount é uma coluna no payment tabela.

Para dar um pouco mais de contexto, aqui está um instantâneo da tabela:
+------------+-------------+----------+-----------+--------+----------------------------+
| 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 |
...

Podemos ver a amount coluna que adicionamos em nosso exemplo.

A tabela contém muito mais dados do que isso, mas isso mostra um instantâneo dos valores que adicionamos.

Resultados filtrados


A SUM() A função opera nas linhas retornadas pela consulta. Então, se você filtrar os resultados, o resultado de SUM() vai refletir isso.

Vamos filtrar os resultados:
SELECT SUM(amount) 
FROM payment
WHERE customer_id = 269;

Resultado:
129.70

Desta vez, obtivemos a soma de todos os valores pagos pelo cliente 269.

O DISTINCT Palavra-chave


Você pode usar o DISTINCT palavra-chave com SUM() para calcular apenas valores distintos. Ou seja, se houver valores duplicados, eles serão tratados como um valor.

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

Resultado:
+----------+----------+
|   All    | Distinct |
+----------+----------+
| 67416.51 |   116.75 |
+----------+----------+

Este exemplo compara os resultados do DISTINCT opção contra omiti-lo.

Nesse caso, há uma diferença muito grande, o que sugere que há muitos valores duplicados nessa coluna.

Para verificar isso, podemos gerar os valores distintos como este:
SELECT DISTINCT amount
FROM payment;

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

Então, nosso exemplo somou todos esses valores distintos.