GROUPBY i WITH CUBE

W poprzednim poście wyjaśniłem do czego służy klauzula WITH ROLLUP. Dzisiaj zajmiemy się bardzo podobnym mechanizmem – WITH CUBE. Najlepiej wyjaśnić to znów na przykładzie tabeli. Załóżmy, że mamy poniższe zapytanie:

select StoreName,ProductType,sum(Number) from SoldProducts GROUP BY  StoreName,ProductType

W wyniku wykonania otrzymamy:

StoreName ProductType Suma
SklepA komputery 1
SklepA spożywka 3
SklepB komputery 4
SklepB spożywka 6

Jak wiemy z poprzedniego wpisu WITH ROLLUP umożliwi uzyskanie wyników hierarchicznych (ile całkowicie zostało sprzedanych produktów w danym sklepie):

StoreName ProductType Suma
SklepA komputery 1
SklepA spożywka 3
SklepB komputery 4
SklepB spożywka 6
SklepA NULL 4
SklepB NULL 10
NULL NULL 14

 

Z kolei WITH CUBE zwróci trochę więcej wierszy:

select StoreName,ProductType,sum(Number) from SoldProducts GROUP BY  StoreName,ProductType WITH CUBE

StoreName ProductType Suma
SklepA komputery 1
SklepA spożywka 3
SklepB komputery 4
SklepB spożywka 6
SklepA NULL 4
SklepB NULL 10
NULL NULL 14
NULL spożywka 9
NULL komputery 5

Jak widać WITH CUBE stanowi rozszerzenie WITH ROLLUP – oprócz przedstawiania wyników hierarchicznych po pierwszej kolumnie również w wynikach uwzględnia się kategoryzowanie po drugiej kolumnie.

Leave a Reply

Your email address will not be published.