Podział i zastosowanie Funkcje grupowe Podział i zastosowanie
Rodzaje funkcji grupowych avg – średnia arytmetyczna Select avg(placa_pod) Count – liczba wystąpień Select count(*) from PRACOWNICY Max – maksymalna wartość Select max(placa_dod) from PRACOWNICY Min – minimalna wartość Select min(id_zesp) from PRACOWNICY
Zapytania z jedną grupą(1) Wszystkie rekordy przetwarzane przez zapytanie tworzą jedną grupę Wynikiem zapytania jest maksymalnie jeden rekord Znajdź sumaryczą płacę podstawową wszystkich pracowników select sum(placa_pod) from PRACOWNICY
Zapytania z jedną grupą(2) Znajdź średnią płacę podstawową wśród pracowników z zespołu 10: select avg(placa_pod) from PRACOWNICY where id_zesp=10 Znajdź maksymalną wartość dodatku oraz liczbę pracowników na etacie ADIUNKT: select count(*), max(placa_dod) from PRACOWNICY where etat='ASYSTENT‘
Zapytania z wieloma grupami(1) Klauzula group by wyrażenie definiuje wyrażenie grupujące Wynikiem zapytania jest jeden rekord dla każdej grupy select id_zesp, sum(placa_pod) from PRACOWNICY group by id_zesp
Zapytania z wieloma grupami(2) Wylicz najwyższą płacę wśród pracowników zatrudnionych na każdym etacie select etat, max(placa_pod) from PRACOWNICY group by etat
Podział grupy na podgrupy W ramach każdego zespołu, dla każdego etatu występującego w zespole oblicz najwyższą płacę select id_zesp, etat, max(placa_pod) from PRACOWNICY group by id_zesp, etat
Klauzula HAVING(1) Pozwala na wybór grup spełniających określone warunki, działa dla grup analogicznie jak klauzula WHERE dla pojedynczych krotek Wyświetl grupy etatowe, których maksymalna płaca podstawowa przekracza 1000 select etat, sum(placa_pod) from PRACOWNICY group by etat having max(placa_pod)>1000
Klauzula HAVING(2) Wyświetl nazwy etatów i liczbę zatrudnionych na danym etacie, uwzględnij tylko te etaty, na których jest zatrudnionych co najmniej dwóch pracowników otrzymujących płacę dodatkową select etat, count(*) from PRACOWNICY where placa_dod is not null group by etat having count(*)>=2