Grupisanje podataka u SQL-u najฤeลกฤe vrลกimo uz pomoฤ SELECT naredbe i njene klauzule „GROUP BY“. Grupisanje se vrลกi po odreฤenoj vrednosti nekog polja u tabeli, a svi grupisani podaci imaju istu vrednost u datom polju. Svi duplikati (slogovi sa istom vrednoลกฤu u odreฤenom polju) se smeลกtaju u jednu grupu, i nad njima moลพe da se obavlja ista funkcija (npr. neka od agregatnih funkcija). Pri ovome, u jednom SELECT iskazu mogu da se izvrลกe grupisanja po viลกe polja. Klauzulom „GROUP BY“ dobijamo samo jedinstvene vrednosti iz odreฤenog polja tabele, koje ฤe se sortirati prema rastuฤem redosledu. Ovo je sliฤno klauzuli „ORDER BY“, samo ลกto se kod ove ne izbacuju slogovi sa dupliranim vrednostima.
U sledeฤem primeru videฤemo jednostavan upit koji ฤe prebrojati radnike po sektorima u kojima rade. Tabela koju ฤemo koristiti je „Radnik“, a definisali smo je i pre, u ranijim prilozima: „Radnik“ sa poljima (SIF_R, IME, PREZ, SIF_S). Upit ฤe glasiti:
SELECT Radnik.SIF_S, Count(*) AS stanje
FROM Radnik
GROUP BY Radnik.SIF_S;
Rezultat upita biฤe kao na slici. Za prebrojavanje broja radnika iskoristili smo agregatnu funkciju „COUNT“, a dobijene razultate smo smestili u polje „stanje“. Pri ovom upitu sektori ฤe se prvo sortirati (kao „ORDER BY“ klauzuli), a zatim ฤe se izbaciti duplikati (tj. neฤe se prikazati).
Joลก jedna od bitnih stvari je upotreba klauzule „HAVING“, koja sluลพi za selekciju samo odreฤenih grupa podataka, prethodno grupisanih sa „GROUP BY“. Klauzulom „HAVING“ uporeฤujemo neko svojstvo izdvojene grupe sa konstantom, a zatim izdvajamo samo one slogove koji zadovoljavaju ovaj logiฤki izraz. Recimo da treba da izdvojimo sve sektore sa odreฤenim brojem radika, upit bi onda glasio:
SELECT Radnik.SIF_S, Count(*) AS stanje
FROM Radnik
GROUP BY Radnik.SIF_S
HAVING Count(*)=1;
Rezultat upita bi bio (izveden iz tabela sa slike):
SIF_S stanje
——————
24 1
Kao ลกto vidite, grupisali smo slogove po sektorima i prebrojali broj radnika u svakom, a zatim smo izdvojili samo one sektore koji imaju samo jednog radnika.
Pratite Krstaricu na www.krstarica.com