Blog JSystems - uwalniamy wiedzę!

Szukaj

Przed dokonaniem grupowania można zastosować klauzulę where, która wybierze tylko część wierszy z tabeli. Klauzula where wykonuje się przed grupowaniem, a zatem nie można w tej klauzuli sprecyzować warunku zawierającego funkcje grupowe. Aby taki warunek zawrzeć w zapytaniu należy zastosować dodatkową klauzulę having wraz z odpowiednim warunkiem. Jest ona odpowiednikiem klauzuli where, tylko, że wykonuje się ona po procesie grupowania. Stanowi ona wsparcie dla agregacji.

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

76.jpg (760×350)

Wyświetlona została ilość wierszy , która została pogrupowana z uwzględnieniem odpowiedniego identyfikatora kategorii produktu, a następnie pozostawione wyniku wyświetlenia zostały jedynie rekordy, gdzie podliczona ilość wierszy wynosiła więcej niż 10.

 

Baner szkolenia Kompleksowe SQL w Microsoft SQL Server w JSystems, terminy gwarantowane

Szkolenie Kompleksowe SQL w Microsoft SQL Server →

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czym różni się klauzula HAVING od WHERE?
Klauzula WHERE wykonuje się przed grupowaniem i wybiera część wierszy z tabeli, dlatego nie może zawierać warunków opartych na funkcjach grupowych. HAVING jest jej odpowiednikiem wykonywanym po procesie grupowania i pozwala nałożyć warunek na wynik agregacji.
Dlaczego nie można użyć funkcji grupowej w klauzuli WHERE?
Ponieważ WHERE działa przed grupowaniem, na etapie, gdy grupy i ich agregaty jeszcze nie istnieją. Warunek oparty na funkcji grupowej, na przykład na liczbie wierszy w grupie, trzeba więc umieścić w klauzuli HAVING, która wykonuje się po grupowaniu.
Jak wygląda przykładowe użycie HAVING?
W zapytaniu grupujesz dane, na przykład po identyfikatorze kategorii produktu, a następnie w klauzuli HAVING podajesz warunek na agregacie, na przykład count(*) większe niż 10. W wyniku pozostają tylko grupy, które ten warunek spełniają.
Czy HAVING można stosować bez grupowania?
HAVING stanowi wsparcie dla agregacji i jest przeznaczone do filtrowania wyników po grupowaniu. W praktyce stosuje się je razem z grupowaniem danych, aby ograniczyć zestaw wynikowy na podstawie wartości funkcji grupowych.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...