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

Podobne dokumenty