Comprendre les différences entre le CUBE et le correctif CUMULATIF

Ma mission m'a demandé de savoir "combien de factures ont été écrites pour chaque jour?"

J'étais un peu coincé et a demandé à mon professeur de l'aide. Elle m'a envoyé une requête qui doit répondre à la question, "Combien de poêles de chaque type et version ont été construits?
Pour un défi, mais pas de points supplémentaires, inclure le nombre total de poêles".

C'était la requête qu'elle m'a envoyé:

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

Donc, j'ai modifié cette requête jusqu'à ce qu'il répondait à mes besoins. C'est ce que je suis venu avec:

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

Et il a renvoyé les résultats suivants que je voulais.

De toute façon, j'ai décidé de lire sur les CUMULATIF de la clause et a commencé avec un article de Microsoft. Il a dit que le CUMULATIF de la clause a été similaire pour le CUBE de la clause, mais qu'il a été distingué par le CUBE de la clause de la manière suivante:

  1. CUBE génère un ensemble de résultats montre que les agrégats pour toutes les combinaisons de valeurs dans les colonnes sélectionnées.
  2. CUMULATIF génère un ensemble de résultats montre que les agrégats d'une hiérarchie de valeurs dans les colonnes sélectionnées.

Donc, j'ai décidé de remplacer le correctif CUMULATIF dans ma requête avec le CUBE pour voir ce qui allait se passer. Ils ont produit les mêmes résultats. Je suppose que c'est là où j'en suis confus.

Il semble que, si vous utilisez le type de requête que je suis ici, qu'il n'y a pas de différence pratique entre les deux clauses. Est ce que le droit? Ou, je ne suis pas à comprendre quelque chose? J'avais pensé, quand j'ai fini de lire l'article de Microsoft, que mes résultats devraient ai été différent avec le CUBE de la clause.

InformationsquelleAutor krebshack | 2011-08-13