Group By Rollup: O uso do Group by ampliado!

A cláusula Rollup veio agregar valores ao famoso Group By, possibilitando criar Subtotais das somas já existentes numa seleção com o Group By. Ela ainda destaca o valor do total.

Sua sintaxe é bem simples, vejamos!

SELECT PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP(CUSTOMER_ID, PRODUCT_CODE)

 

Vejamos, que após a cada grupo ele cria um subtotal dos valores acima, e no final ele gera um total geral.

 Agora, vamos melhorar ainda mais a nossa consulta com o uso do Rollup!

SELECT CUSTOMER_ID, DECODE(CUSTOMER_ID, NULL, ‘TOTAL’, ‘SUB_TOTAL’), TOTAL
FROM (
SELECT CUSTOMER_ID, PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP (CUSTOMER_ID,PRODUCT_CODE))
WHERE PRODUCT_CODE IS NULL


 Mais uma forma para executarmos a seleção.

SELECT CUSTOMER_ID,
CASE
 WHEN CUSTOMER_ID IS NULL THEN
                ‘TOTAL’
WHEN PRODUCT_CODE IS NULL THEN
                ‘SUB_TOTAL’
ELSE
 PRODUCT_CODE
END DESCRICAO, TOTAL
FROM (SELECT CUSTOMER_ID, PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP(CUSTOMER_ID, PRODUCT_CODE))

Galera, espero ter ajudado nas suas queries com esse recurso.

Abraços e até a próxima!