Blog JSystems - z miłości do programowania

Szukaj

Grupowanie w MS SQL Server

Grupowanie polega na podzieleniu zbioru wierszy na grupy, które mają pewną wspólną cechę. Grupowania dokonuje się w celu zastosowania funkcji agregujących nie w stosunku do całego zbioru wierszy, ale do poszczególnych grup wierszy. W celu zgrupowania rekordów należy dodać nową klauzulę group by wraz z wyspecyfikowaniem kolumny lub wyrażenia, według którego mają być pogrupowane wiersze. Na liście klauzuli select mogą się znaleźć tylko kolumny i wyrażenia, według których zapytanie jest grupowane, oraz wywołania funkcji agregujących.


select count(*) IlośćWierszy, ProductCategoryID from SalesLT.Product group by ProductCategoryID;


72.jpg (771×351)


Wyświetlona została ilość wierszy , która została pogrupowana z uwzględnieniem odpowiedniego identyfikatora kategorii produktu.


Przed grupowaniem można wcześniej wyfiltrować wiersze, które nas interesują, za pomocą klauzuli where,


select count(*) IlośćWierszy, ProductCategoryID from SalesLT.Product where ProductCategoryID group by ProductCategoryID;


73.jpg (794×337)


Wyświetlona została ilość wierszy , z uwzględnieniem produktów, których identyfikator kategorii produktu  jest większy rób równy 10, a następnie dane te zostały pogrupowane na odpowiedni identyfikator kategorii produktu. 


Grupowania można używać na więcej niż jedną kolumnę lub wyrażenie. Aby tego dokonać po klauzuli group by i pierwszą nazwą kolumny lub wyrażenia, według którego mają być pogrupowane wiersze, dodajemy następną nazwę kolumny lub wyrażenia, po której w ramach grupy powstałej w wyniku pierwszego grupowania, ma nastąpić następne grupowanie. Kolejne kolumny lub wyrażenia oddzielamy przecinkiem.


select count(*) IlośćWierszy, ProductCategoryID, ProductmodelID from SalesLT.Product group by ProductCategoryID, ProductmodelID;


74.jpg (752×336)


Wyświetlona została ilość wierszy , która została pogrupowana z uwzględnieniem odpowiedniego identyfikatora kategorii produktu, a następnie w ramach tych grup, nastąpiło kolejne grupowanie z rozróżnieniem na identyfikator modelu produktu. Dokładnie widać to na wierszach numer 3 i 4.


select count(*) IlośćWierszy, ProductCategoryID, ProductmodelID from SalesLT.Product group by ProductCategoryID, ProductmodelID;


75.jpg (825×338)


Wyświetlona została ilość wierszy , która została pogrupowana z uwzględnieniem odpowiedniego identyfikatora kategorii produktu, a następnie w ramach tych grup, nastąpiło kolejne grupowanie z rozróżnieniem na identyfikator modelu produktu  a dalej wiersze zostały pogrupowane z uwzględnieniem odpowiedniego koloru.  Dokładnie widać to na wierszach numer 1 i 2.


 

Przyjdź do nas na szkolenie z baz danych SQL Server! Mamy szereg szkoleń w ofercie: SQL, T-SQL, tuning, administracja i wiele innych. Sprawdź dostępne szkolenia SQL Server
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu! Zapisz się do newslettera