Prawdopodobnie wszyscy znają już klauzulę group by w zapytaniach SQL – nie stanowi żadnej rewelacji. Myślę jednak, że znacznie mniej popularniejszą klauzulą jest GROUPING SETS. Rozważmy następujące zapytanie:
select * from Products GROUP BY ProductCategory union all select * from Products GROUP BY ProductSubcategory
Zapytanie zwróci wiersze pogrupowane po kategorii produktu oraz podkategorii. Należy podkreślić, że grupowania wykonywane są niezależnie od siebie i nie mają charakteru hierarchicznego (tak jak to byłoby w przypadku umieszczenia kolumn w jednym GROUP BY). Używając Gruping Sets, powyższe zapytanie można zapisać:
select * from Products GROUP BY GROUPING SETS ((ProductCategory),(ProductSubcategory))
Podobnie zapytanie:
select * from Products GROUP BY ProductCategory,ProductSubcategory;
można zastąpić:
select * from Products GROUP BY GROUPING SETS ((ProductCategory,ProductSubcategory));