Syntaxe
|
SUM([DISTINCT] expression) [OVER (...)]
|
Paramètres
| Nom |
Description |
| DISTINCT |
Ce paramètre facultatif permet de spécifier que le calcul de la somme doit être effectué uniquement sur les valeurs uniques de l'expression. Si DISTINCT est utilisé, les valeurs dupliquées sont ignorées avant d'être additionnées. |
| expression |
Ce paramètre permet de spécifier l'expression numérique (colonne ou calcul) dont vous souhaitez calculer la somme. |
| OVER (...) |
Ce paramètre facultatif permet de définir la fenêtre d'analyse pour la fonction. Quand OVER est utilisé, SUM agit comme une fonction de fenêtre, calculant la somme des valeurs pour chaque ligne par rapport à un ensemble de lignes défini par la clause OVER. Cette clause peut inclure des spécifications de partitionnement (PARTITION BY), d'ordonnancement (ORDER BY), et de cadrage de fenêtre (ROWS ou RANGE). Si OVER est omis, la fonction agit comme une fonction d'agrégation standard sur toutes les lignes du groupe ou de la table. |
Description
Cette fonction permet d'effectuer le calcul de la somme de valeurs spécifiées.
Remarques
- Fonction d'agrégation essentielle pour les calculs numériques : La fonction SUM est l'une des plus couramment utilisées dans les requêtes SQL.
Elle permet de faire l'addition de toutes les valeurs numériques d'une colonne ou d'une expression donnée. Cela en fait un outil fondamental pour calculer des totaux, des
sous-totaux ou des soldes dans des rapports financiers ou statistiques.
- Utilisation du mot clef DISTINCT : L'ajout de DISTINCT à la fonction SUM permet de ne prendre en compte que les valeurs uniques. Cela est utile lorsque
l'on souhaite éviter de comptabiliser plusieurs fois les mêmes montants en cas de doublons dans les données sources. Par exemple, SUM(DISTINCT montant) éliminera toute
redondance avant l'addition.
- Compatible avec les fonctions de fenêtre (OVER(...)) : La fonction peut être utilisée avec une clause OVER, ce qui transforme SUM en fonction analytique.
Cela permet de calculer une somme cumulative, une somme par partition (groupe) ou selon une fenêtre mobile, tout en conservant toutes les lignes de la table. C'est très
utile dans les rapports dynamiques et les séries temporelles.
- Ne s'applique qu'aux types numériques : La fonction SUM ne fonctionne que sur des expressions de type numérique comme INT64, FLOAT64, ou
NUMERIC. Tenter de l'utiliser sur des champs de type STRING ou DATE provoquera une erreur. Il est donc souvent nécessaire de convertir les données avec
CAST ou de les filtrer avant utilisation.
- Retourne NULL si aucune valeur n'est trouvée : Lorsque toutes les valeurs agrégées sont NULL, la fonction SUM retourne NULL et non zéro. Cela peut
entraîner des résultats inattendus si l'on ne prévoit pas ce comportement. Pour garantir un retour de zéro, il est fréquent d'utiliser IFNULL(SUM(...), 0) ou
COALESCE(SUM(...), 0).
- Impact de la clause GROUP BY : Sans clause OVER, la fonction SUM est souvent utilisée avec GROUP BY. Elle permet alors de calculer la somme pour chaque groupe
défini (exemple : total des ventes par région). Cela est fondamental dans toute analyse par catégorie ou dimension agrégée.
- Optimisée pour les grandes volumétries de données : BigQuery optimise l'exécution des agrégats comme SUM, même sur des tables contenant des milliards de
lignes. Cela permet des analyses de données à très grande échelle sans compromettre les performances, notamment en contexte d'entrepôt de données infonuagique.
- Utilisation possible dans des sous-requêtes ou des CTE : SUM peut être utilisée dans des expressions imbriquées, comme des sous-requêtes ou des WITH (CTE),
pour préparer des agrégations avant de les combiner ou de les filtrer. Cela permet d'effectuer des calculs intermédiaires de manière propre et modulaire dans des requêtes
complexes.
Dernière mise à jour : Jeudi, le 18 Juin 2020