Klauzula GROUP BY w MsSQL

Tomasz Kenig/ / Kurs SQL Server/ 0 komentarzy

1. GROUP BY w SQL Server – Jak grupować rekordy?

W tym rozdziale dowiesz się jak korzystać z klauzuli grupujące GROUP BY w SQL Server. Funkcje agregujące MsSQL, które poznałeś w poprzednim rozdziale takie jak SUM, MIN, MAX, AVG, COUNT działają z klauzulą grupującą GROUP BY. Oznacza to dla nas tyle, że używając funkcji agregujących możemy jednocześnie grupować rekordy w wyniku zapytnia tak, jak w poniższym przykładzie wykonanym na bazie AdventureWorks2016:

SQL Server Group By - grupowanie rekordów

SQL Server Group By – grupowanie rekordów

2. Przykład grupowania w SQL Server – GROUP BY HAVING

Grupowanie GROUP BY w SQL Server możemy wykonać na więcej niż jednej kolumnie. Możemy np na naszej bazie wykonać obliczenie sumy, średniej, min, max godzin urlopu (VacationHours) w danych departamentach wg. płci. Przykład takiego obliczenia zamieszczam poniżej. Dodatkowo w zapytaniu użyjemy klauzuli WHERE, w której zawężymy przeszukiwaną tabelę do obecnych pracowników, a więc posiadających w kolumnie Status wartość ‘Current‘.

Zauważ, że warunek ujęty w klauzuli WHERE działa przed grupowaniem. Oznacza to tyle, że do grupowania zostały wzięte tylko te rekordy, które w kolumnie Status posiadają wartość ‘Current’. Co jednak, jeśli chcemy, by zapytanie dodatkowo filtrowało wynik po dokonaniu grupowania? Służy do tego klauzula HAVING. HAVING  w odróżnieniu od WHERE działa po dokonaniu grupowania. Oznacza, to tyle, że wynik po dokonaniu grupowania jest jeszcze zawężany o dodatkowe kryteria. Warunkiem tym może być np to, że bieżemy pod uwagę tylko grupy pracowników, które posiadają średnią liczbę godzin urlopu(VacationHours) większą lub równą od 70. Klauzulę HAVING wstawiamy po grupowaniu GROUP BY. Przykład poniżej:

GROUP BY w SQL Server - HAVING

GROUP BY w SQL Server – HAVING

3. Grupowanie, a użycie funkcji 

Jeśli w kolumnach wg. których grupujesz dane chcesz użyć funkcji, bądź instrukcji CASE, pamiętaj że powinieneś to zapisać także w klauzuli GROUP BY. Przykład takiego grupowania zamieszczam poniżej:

Artykuł stanowi częśc kursu SQL Server. Jeśli masz jakieś pytania, możesz je zamieścić na forum bez logowania lub zostawić komentarz.

Zostaw Komentarz

Twój adres email nie zostanie opublikowany.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">