PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonction SUM() dans PostgreSQL

Dans PostgreSQL, le SUM() calcule la somme des valeurs d'entrée non nulles et renvoie le résultat.

En d'autres termes, il additionne des nombres et renvoie le résultat.

Exemple

Voici un exemple rapide pour montrer comment cela fonctionne :

SELECT SUM(amount) 
FROM payment;

Résultat :

67416.51

Dans ce cas, amount est une colonne dans le payment table.

Pour donner un peu plus de contexte, voici un aperçu du tableau :

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

Nous pouvons voir le amount colonne que nous avons ajoutée dans notre exemple.

Le tableau contient beaucoup plus de données que cela, mais cela vous montre un instantané des valeurs que nous avons additionnées.

Résultats filtrés

La SUM() La fonction opère sur les lignes renvoyées par la requête. Donc si vous filtrez les résultats, le résultat de SUM() reflétera cela.

Filtrons les résultats :

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

Résultat :

129.70

Donc, cette fois, nous avons obtenu la somme de tous les montants payés par le client 269.

Le DISTINCT Mot clé

Vous pouvez utiliser le DISTINCT mot clé avec SUM() pour ne calculer que des valeurs distinctes. Autrement dit, s'il existe des valeurs en double, elles sont traitées comme une seule valeur.

Exemple :

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

Résultat :

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

Cet exemple compare les résultats de DISTINCT option contre l'omission.

Dans ce cas, il y a une très grande différence, ce qui suggère qu'il y a beaucoup de valeurs en double dans cette colonne.

Pour vérifier cela, nous pouvons afficher les valeurs distinctes comme ceci :

SELECT DISTINCT amount
FROM payment;

Résultat :

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

Notre exemple a donc additionné toutes ces valeurs distinctes.