© Jouni Huotari ja Tapani Äijänen
19
Ryhmittely - Having
•Sekä HAVING- että WHERE-lauseella voidaan ryhmittelyn tulosta rajata:
–SELECT myyja, COUNT(*)  -- myös NULL kelpaa
–FROM tuote
–WHERE tuoteHinta > 100
–GROUP BY myyja -- hae myyjät joilla
–HAVING COUNT(*) >2; -- vähintään 3 tuotetta
•Tulosjoukkoa voidaan siis rajata eri tasoilla:
–rajataan ensiksi ryhmiteltävä joukko WHERE-lausekkeella
–tästä syntynyt tulos ryhmitellään GROUP BY-määrittelyllä
–lopuksi ryhmiteltyä joukkoa voidaan vielä rajata HAVING-lauseella
-- Harjoitus 2: peruskyselyjä OCELOT-tietokannasta
-- aiheena funktiot, ryhmittely, liitokset

-- hae kaupungit, joista kotoisin olevien työntekijöiden arvojen summa on suurempi kuin 30

SELECT city,SUM(rate)
FROM EMPS
GROUP BY CITY
HAVING SUM(RATE) > 30;

-- rajaa edellinen kysely siten, että osasto on A, B tai C
-- anna arvosummalle (otsikon) nimeksi Arvosumma
SELECT city,SUM(rate) AS Arvosumma
FROM emps
WHERE dept < 'D'
GROUP BY city
HAVING SUM(rate) > 30;