Extensions de regroupement - AWS Clean Rooms

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Extensions de regroupement

AWS Clean Rooms prend en charge les extensions d'agrégation pour effectuer plusieurs opérations GROUP BY dans une seule instruction.

GROUPING SETS

Calcule un ou plusieurs jeux de regroupement dans une seule instruction. Un ensemble de regroupement est l'ensemble d'une seule clause GROUP BY, un ensemble de 0 colonnes ou plus par lequel vous pouvez regrouper le jeu de résultats d'une requête. GROUP BY GROUPING SETS équivaut à exécuter une UNION ALL requête sur un ensemble de résultats groupé par différentes colonnes. Par exemple, GROUP BY GROUPING SETS ((a), (b)) est équivalent à GROUP BY a UNION ALL GROUP BY b.

L’exemple suivant renvoie le coût des produits de la table des commandes, regroupés par catégories de produits et type de produits vendus.

SELECT category, product, sum(cost) as total FROM orders GROUP BY GROUPING SETS(category, product); category | product | total ----------------------+----------------------+------- computers | | 2100 cellphones | | 1610 | laptop | 2050 | smartphone | 1610 | mouse | 50 (5 rows)

ROLLUP

Suppose une hiérarchie dans laquelle les colonnes précédentes sont considérées comme les parents des colonnes suivantes. ROLLUPregroupe les données selon les colonnes fournies, en renvoyant des lignes de sous-total supplémentaires représentant les totaux de tous les niveaux de regroupement des colonnes, en plus des lignes groupées. Par exemple, vous pouvez utiliser GROUP BY ROLLUP ((a), (b)) pour renvoyer un jeu de résultats groupé d'abord par a, puis par b en supposant que b est une sous-section de a. Renvoie ROLLUP également une ligne contenant le jeu de résultats complet sans regrouper les colonnes.

GROUPBY ROLLUP ((a), (b)) est équivalent à GROUP BY GROUPING SETS ((a, b), (a), ()).

L’exemple suivant renvoie le coût des produits de la table des commandes, regroupés d’abord par catégorie, puis par produit, le produit étant une subdivision de la catégorie.

SELECT category, product, sum(cost) as total FROM orders GROUP BY ROLLUP(category, product) ORDER BY 1,2; category | product | total ----------------------+----------------------+------- cellphones | smartphone | 1610 cellphones | | 1610 computers | laptop | 2050 computers | mouse | 50 computers | | 2100 | | 3710 (6 rows)

CUBE

Regroupe les données selon les colonnes fournies, en renvoyant des lignes de sous-total supplémentaires représentant les totaux de tous les niveaux de regroupement des colonnes, en plus des lignes groupées. CUBErenvoie les mêmes lignes queROLLUP, tout en ajoutant des lignes de sous-total supplémentaires pour chaque combinaison de colonnes de regroupement non couverte parROLLUP. Par exemple, vous pouvez utiliser GROUP BY CUBE ((a), (b)) pour renvoyer un jeu de résultats groupé d'abord par a, puis par b en supposant que b est une sous-section de a, puis par b uniquement. CUBErenvoie également une ligne contenant l'ensemble des résultats sans regrouper les colonnes.

GROUPBY CUBE ((a), (b)) est équivalent à GROUP BY GROUPING SETS ((a, b), (a), (b), ()).

L’exemple suivant renvoie le coût des produits de la table des commandes, regroupés d’abord par catégorie, puis par produit, le produit étant une subdivision de la catégorie. Contrairement à l'exemple précédent pourROLLUP, l'instruction renvoie des résultats pour chaque combinaison de colonnes de regroupement.

SELECT category, product, sum(cost) as total FROM orders GROUP BY CUBE(category, product) ORDER BY 1,2; category | product | total ----------------------+----------------------+------- cellphones | smartphone | 1610 cellphones | | 1610 computers | laptop | 2050 computers | mouse | 50 computers | | 2100 | laptop | 2050 | mouse | 50 | smartphone | 1610 | | 3710 (9 rows)