GROUPING
(day, month, year), et calcule des sous-totaux à chaque niveau de l’agrégation, puis un total général. CUBE calcule des sous-totaux pour toutes les combinaisons possibles des colonnes spécifiées. GROUPING permet d’identifier quelles lignes renvoyées par ROLLUP ou CUBE sont des super-agrégats, et lesquelles correspondent aux lignes qu’un GROUP BY sans modificateur renverrait.
La fonction GROUPING prend plusieurs colonnes en argument et renvoie un masque de bits.
1indique qu’une ligne renvoyée par un modificateurROLLUPouCUBEdeGROUP BYest un sous-total0indique qu’une ligne renvoyée parROLLUPouCUBEn’est pas un sous-total
GROUPING SETS
Charger des données d’exemple
Requêtes simples
Comparaison de plusieurs clauses GROUP BY avec GROUPING SETS
Comparaison entre CUBE et GROUPING SETS
CUBE(datacenter,distro,version), définit une hiérarchie qui n’est pas forcément pertinente. Il n’est pas pertinent d’examiner version pour les deux distributions (car Arch et RHEL n’ont ni le même cycle de publication ni les mêmes conventions de nommage des versions). L’exemple de GROUPING SETS qui suit est plus approprié, car il regroupe distro et version dans le même ensemble.
La version dans l’exemple ci-dessus peut ne pas avoir de sens lorsqu’elle n’est pas associée à une distribution ; en revanche, si nous suivions la version du noyau, cela pourrait être pertinent, car la version du noyau peut être associée à l’une ou l’autre des distributions. Utiliser GROUPING SETS, comme dans l’exemple suivant, peut donc être un meilleur choix.