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