GROUP BY i WITH ROLLUP

Operator WITH ROLLUP używa się w połączeniu z GROUPBY. Czasami istnieje potrzeba grupowania wyników po dwóch kolumnach. Wyobraźmy sobie, że mamy tabelę lub widok zawierający listę sprzedanych produktów. Będziemy mieli zatem takie kolumny jak “nazwa produktu”, “nazwa sklepu w którym został sprzedany produkt” oraz “typ produktu”. Przykładowe zapytanie wyglądałoby więc następująco:

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

Zapytanie zwróci produkty pogrupowanie wzgędem sklepu oraz typu:

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

Po wynikach wiemy jaka grupa produktów sprzedaje się najlepiej w danym sklepie. Za pomocą WITH ROLLUPP możemy dowiedzieć się również ile sztuk produktu zostało sprzedanych w danym sklepie, niezależnie od jego typu:

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

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

Jak widać, WITH ROLLUP spowodował dodanie hierarchicznych wierzy z NULL. Wiadomo, teraz ile ogólnie zostało sprzedanych produktów oraz ile w poszczególnych sklepach.

Leave a Reply

Your email address will not be published.