Entendendo as diferenças entre CUBE e ROLLUP

Meu trabalho me pediu para descobrir "quantas faturas são escritas para cada data?"

Fiquei um pouco preso e pedi ajuda ao meu professor. Ela me enviou uma pergunta que responderia à pergunta: "Quantos fogões de cada tipo e versão foram construídos? Para um desafio, mas sem pontos extras, inclua o número total de fogões"

Esta foi a consulta que ela me enviou:

SELECT STOVE.Type + STOVE.Version AS 'Type+Version'
, COUNT(*) AS 'The Count'
FROM STOVE
GROUP BY STOVE.Type + STOVE.Version WITH ROLLUP;

Então, aprimorei essa consulta até atender às minhas necessidades. Isto é o que eu vim com:

SELECT InvoiceDt
, COUNT(InvoiceNbr) AS 'Number of Invoices' 
FROM INVOICE 
GROUP BY InvoiceDt WITH ROLLUP 
ORDER BY InvoiceDt ASC;

E retornou os seguintes resultados que eu queri

e qualquer forma, decidi ler a cláusula ROLLUP e comecei com um artigo de Microsoft. Dizia que a cláusula ROLLUP era semelhante à cláusula CUBE, mas que se distinguia da cláusula CUBE da seguinte maneira:

@CUBE gera um conjunto de resultados que mostra agregados para todas as combinações de valores nas colunas selecionadaROLLUP gera um conjunto de resultados que mostra agregados para uma hierarquia de valores nas colunas selecionada

Então, decidi substituir o ROLLUP na minha consulta pelo CUBE para ver o que aconteceria. Eles produziram os mesmos resultados. Acho que é aí que estou ficando confus

Parece que, se você estiver usando o tipo de consulta que eu estou aqui, não há nenhuma diferença prática entre as duas cláusulas. Isso esta certo? Ou não estou entendendo alguma coisa? Quando pensei em ler o artigo da Microsoft, pensei que meus resultados deveriam ter sido diferentes usando a cláusula CUBE.

questionAnswers(4)

yourAnswerToTheQuestion