Funkcje grupowe
Transkrypt
Funkcje grupowe
Funkcje grupowe • operują na podzbiorach krotek relacji, nazywanych grupami • wyznaczają wartość operując na atrybutach wielu krotek • funkcje: – avg ([distinct|all] wyrażenie) – count ([distinct|all] wyrażenie) – max ([distinct|all] wyrażenie) SELECT SELECTAVG(placa_pod) AVG(placa_pod) – min ([distinct|all] wyrażenie) FROM FROMpracownicy; pracownicy; – sum ([distinct|all] wyrażenie) SELECT SELECTcount(*) count(*) FROM FROMpracownicy pracownicy WHERE WHEREid_zesp=20; id_zesp=20; Funkcje grupowe 1 Podział krotek na grupy - klauzula GROUP BY • wyznacz średnie płace w każdej z grup zespołowych SELECT zesp, avg (placa_pod) SELECTid_ id_zesp, avg(placa_pod) FROM FROMpracownicy pracownicy GROUP zesp; GROUPBY BYid_ id_zesp; Podział grup na podgrupy • wyznacz średnie płace w każdej z grup etatowych dla poszczególnych zespołów SELECT zesp, etat, (placa_pod) SELECTid_ id_zesp, etat,avg avg(placa_pod) FROM FROMpracownicy pracownicy GROUP zesp, etat; GROUPBY BYid_ id_zesp, etat; Funkcje grupowe 2 Klauzula HAVING • wybór grup spełniających określone warunki • wyświetl grupy etatowe, których suma płac podstawowych przekracza 4000 PLN SELECT placa_pod) SELECTetat, etat,sum( sum(placa_pod) FROM FROMpracownicy pracownicy GROUP GROUPBY BYetat etat HAVING placa_pod) >>4000; HAVINGsum( sum(placa_pod) 4000; • wyświetl maksymalne płace w ramach grup etatowych, z pominięciem grupy adiunktów SELECT placa_pod) SELECTetat, etat,max( max(placa_pod) FROM FROMpracownicy pracownicy WHERE WHEREetat etat!= !='ADIUNKT' 'ADIUNKT' GROUP GROUPBY BYetat; etat; Funkcje grupowe 3