Please enable JavaScript.
Coggle requires JavaScript to display documents.
7- SQL pour OLAP GROUP BY (GROUPING_ID/ GROUP_ID / GROUPING SETS (GROUPING…
7- SQL pour OLAP GROUP BY
ROLLUP / ROLLUP partiel
ROLLUP
Calcule des agrégats à tous les niveaux de totalisation sur une hiérarchie de dimensions et calcule le total général. (Selon l’ordre de gauche à droite)
S’il y a n colonnes de regroupements, GROUP BY ROLLUP génère n+1 niveaux de totalisation
ROLLUP partiel
Permet de totaliser à certains niveaux sur une dimension (Pas de total général)
CUBE / CUBE partiel
CUBE
Crée des sous-totaux pour toutes les combinaisons possibles d’un ensemble de colonnes de regroupement
Si la clause CUBE contient n colonnes, CUBE calcule 2n combinaisons de totaux
CUBE partiel
Ne calcule pas de total général
GROUPING_ID/ GROUP_ID / GROUPING SETS
GROUPING
S’insère dans le SELECT, et a un argument qui est un nom de colonne
Elle
renvoie 1
quand elle rencontre une
valeur nulle
créée par ROLLUP ou CUBE Sinon elle
renvoie 0
Combinée avec la fonction Oracle
DECODE
, la fonction GROUPING permet d’améliorer la lisibilité
GROUPING avec
HAVING
permet de sélectionner les niveaux de regroupement à afficher(condition)
Pour tester les différents critères d’agrégation, il faut autant de colonnes de GROUPING que de colonnes de regroupement
GROUPING_ID
Synthétise en une seule fonction l’état d’agrégation sur les ensembles de critères , Calcule la somme des niveaux de regroupement ( les colonnes supplémentaires gaspillent de l'espace de stockage )
GROUPING SETS
Permet de spécifier des ensembles précis de regroupements ( Équivalent à UNION ALL )
GROUP_ID
La fonction GROUP_ID affecte la valeur 0 à tous les tuples, qui sont le premier calcul et 1, voire 2 ou plus, aux calculs redondants
Colonnes composites
C’est une collection de colonnes qui est traitée comme un tout dans les regroupements (Permet de « sauter » certains niveaux de regroupement)
Groupements concaténés
On peut combiner plusieurs GROUPING SETS, ainsi que des ROLLUP et CUBE dans un même GROUP BY