piątek, 31 marca 2017

Lekcja 16. Filtrowanie grup wierszy. Klauzula HAVING.

Filtrowanie grup wierszy za pomocą klauzuli HAVING
Klauzula HAVING służy do filtrowania grup wierszy. Umieszcza się ją za klauzulą GROUP BY:

SELECT
FROM …
WHERE …
GROUP BY …
HAVING …
ORDER BY … ;

Klauzula GROUP BY może być używana bez klauzuli HAVING, ale klauzula HAVING musi być używana z klauzulą GROUP BY.

Załóżmy, że chcemy przejrzeć kody pracowników, których średnie wynagrodzenie jest większa niż 70000:
  •          za pomocą klauzuli GROUP BY pogrupować wiersze w bloki o tej samej wartość job_code
  •          za pomocą klauzuli HAVING ograniczyć zwrócone wyniki jedynie do tych, w których średnie wynagrodzenie jest większe od 70000
Demonstruje to w poniższym zapytaniu:


Jednoczesne używanie klauzul WHERE i GROUP BY
Klauzule WHERE i GROUP BY mogą być użyte w tym samym zapytaniu. Wówczas klauzula WHERE filtruje zwracane wiersze, a następnie klauzula GROUP BY grupuje pozostałe bloki.
Na przykład poniższe zapytanie:
  •          klauzula WHERE filtruje wiersze tabeli employee, wybierając jedynie te, w których wartość salary jest mniejsza od 1000000
  •          klauzula GROUP BY grupuje pozostałe wiersze według wartości kolumny job_code

Jednoczesne używanie klauzul WHERE, GROUP BY i HAVING
Klauzule WHERE, GROUP BY i HAVING  mogą zostać użyte w tym samym zapytaniu. Wówczas klauzula WHERE filtruje zwracane wiersze, a następnie klauzula GROUP BY grupuje pozostałe bloki, po czym klauzula HAVING filtruje grupy wierszy.
Na przykład poniższe zapytanie:
  •         klauzula WHERE filtruje wiersze tabeli employee, wybierając jedynie te, w których wartość salary jest mniejsza od 1000000
  •          klauzula GROUP BY grupuje pozostałe wiersze według wartości kolumny job_code
  •          klauzula HAVING filtruje grupy wierszy, wybierając jedynie te, w których średnie wynagrodzenie jest większe od 70000


Brak komentarzy:

Prześlij komentarz