sql >> Base de Datos >  >> RDS >> PostgreSQL

Función SUMA() en PostgreSQL

En PostgreSQL, el SUM() La función calcula la suma de los valores de entrada no nulos y devuelve el resultado.

En otras palabras, suma números y devuelve el resultado.

Ejemplo

Aquí hay un ejemplo rápido para demostrar cómo funciona:

SELECT SUM(amount) 
FROM payment;

Resultado:

67416.51

En este caso, amount es una columna en el payment mesa.

Para darle un poco más de contexto, aquí hay una instantánea de la tabla:

+------------+-------------+----------+-----------+--------+----------------------------+
| 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 el amount columna que sumamos en nuestro ejemplo.

La tabla contiene muchos más datos que eso, pero esto le muestra una instantánea de los valores que sumamos.

Resultados filtrados

El SUM() opera en las filas devueltas por la consulta. Entonces, si filtra los resultados, el resultado de SUM() reflejará eso.

Filtremos los resultados:

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

Resultado:

129.70

Así que esta vez obtuvimos la suma de todos los montos pagados por el cliente 269.

El DISTINCT Palabra clave

Puedes usar el DISTINCT palabra clave con SUM() para calcular sólo valores distintos. Es decir, si hay valores duplicados, se tratan como un solo valor.

Ejemplo:

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

Resultado:

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

Este ejemplo compara los resultados de DISTINCT opción en contra de omitirlo.

En este caso, hay una diferencia muy grande, lo que sugiere que hay muchos valores duplicados en esa columna.

Para verificar esto, podemos generar los distintos valores 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)

Así que nuestro ejemplo sumó todos esos valores distintos.