[ Pobierz całość w formacie PDF ]
.Kolejność klauzul w rozkazie SELECTKolejność klauzul w rozkazie SELECTKlauzule mające wpływ na realizację rozkazu SELECT uwzględniane są w następującej kolejności:lSELECT i WHEREllGROUP BYllHAVINGllORDER BYlGrupowanieKlauzule GROUP BY i HAVING występujące w rozkazie SELECT pozwalają dzielić relację wynikową na grupy, wybierać niektóre z tych grup i na każdej z nich z osobna wykonywać pewne (dozwolone przez system) operacje.Operacje te działają na wszystkich wierszach wchodzących w skład grupy.Na samym końcu zwracana jest tylko zbiorcza informacja o wybranych grupach (nie zwraca się wszystkich wierszy wchodzących w skład grupy).Klauzula GROUP BY służy do dzielenia krotek relacji na mniejsze grupy.Sposób takiego podziału ilustruje przykład:SELECT stanowisko, avg(placa_podstawowa)FROM pracownicyGROUP BY stanowisko ;Istnieje możliwość odrzucenia pewnych krotek przed podziałem na grupy.Dokonuje się tego za pmocą klauzuli WHERE:SELECT stanowisko, avg(placa_podstawowa)FROM pracownicyWHERE stanowisko != 'KIEROWCA'GROUP BY stanowisko ;Dzielenie na grupy może być zagnieżdżane, co umożliwia wydzielanie podgrup w uprzednio znalezionych podgrupach.W przykładzie poniżej wszyscy pracownicy są dzieleni na wydziały, w których pracują, a w ramach każdego wydziały grupowani według stanowiska:SELECT wydzial, stanowisko, avg(placa_podstawowa)FROM pracownicyGROUP BY nr_wydzialu, stanowisko ;Klauzula HAVING ogranicza wyświetlanie grup do tych, które spełniają określony warunek.Chcąc wyświetlić tylko te grupy, w których płaca podstawowa przynajmniej jednego pracownika jest większa niż 3 000 należy zastosować następujące zapytanie:SELECT stanowisko, max(placa_podstawowa)FROM pracownicyGROUP BY stanowiskoHAVING max(placa_podstawowa) > 3000 ;
[ Pobierz całość w formacie PDF ]