As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Extensões de agregação
AWS Clean Rooms suporta extensões de agregação para realizar o trabalho de várias operações GROUP BY em uma única instrução.
GROUPING SETS
Calcula um ou mais conjuntos de agrupamento em uma única instrução. Um conjunto de agrupamento é o conjunto de uma única cláusula GROUP BY, um conjunto de 0 ou mais colunas pelo qual você pode agrupar o conjunto de resultados de uma consulta. GROUP BY GROUPING SETS é equivalente a executar uma UNION ALL consulta em um conjunto de resultados agrupado por colunas diferentes. Por exemplo, GROUP BY GROUPING SETS ((a), (b)) é equivalente a GROUP BY a UNION ALL GROUP BY b.
O exemplo a seguir retorna o custo dos produtos da tabela de pedidos agrupados de acordo com as categorias de produtos e o tipo de produto vendido.
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
Assume uma hierarquia em que as colunas anteriores são consideradas pais das colunas subsequentes. ROLLUPagrupa dados pelas colunas fornecidas, retornando linhas extras de subtotais representando os totais em todos os níveis das colunas de agrupamento, além das linhas agrupadas. Por exemplo, você pode usar GROUP BY ROLLUP ((a), (b)) para retornar um conjunto de resultados agrupado primeiro por a e depois por b, assumindo que b é uma subseção de a. ROLLUP também retorna uma linha com todo o conjunto de resultados sem agrupar colunas.
GROUPBY ROLLUP ((a), (b)) é equivalente a GROUP BY GROUPING SETS ((a, b), (a), ()).
O exemplo a seguir retorna o custo dos produtos da tabela de pedidos agrupados primeiro por categoria, depois por produto, com o produto como uma subdivisão da categoria.
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
Agrupa os dados pelas colunas fornecidas, retornando linhas extras de subtotais representando os totais em todos os níveis das colunas de agrupamento, além das linhas agrupadas. CUBEretorna as mesmas linhas queROLLUP, ao mesmo tempo em que adiciona linhas de subtotal adicionais para cada combinação de coluna de agrupamento não coberta por. ROLLUP Por exemplo, você pode usar GROUP BY CUBE ((a), (b)) para retornar um conjunto de resultados agrupado primeiro por a, depois por b, assumindo que b é uma subseção de a e depois somente por b. CUBEtambém retorna uma linha com todo o conjunto de resultados sem agrupar colunas.
GROUPBY CUBE ((a), (b)) é equivalente a GROUP BY GROUPING SETS ((a, b), (a), (b), ()).
O exemplo a seguir retorna o custo dos produtos da tabela de pedidos agrupados primeiro por categoria, depois por produto, com o produto como uma subdivisão da categoria. Diferentemente do exemplo anterior forROLLUP, a instrução retorna resultados para cada combinação de coluna de agrupamento.
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)