Agregirane funkcije
Agregirane funkcije lahko uporabljamo samostojno, ali v kombinaciji s konstruktom za združevanje vrstic tabele.
- Če agregirano funkcijo uporabljamo samostojno, se le-ta izvede nad vsemi vrsticami tabele. Sintaksa:
SELECT AGR_FUNKCIJA(atribut) FROM tabela;
- Ko agregirano funkcijo uporabljamo z združevanjem, se pred izvedbo funkcije vrstice tabele združijo glede na dani pogoj. Potem se agregirana funkcija izvede za vsako skupino vrstic posebej.
SELECT AGR_FUNKCIJA(atribut) [,atrx] FROM tabela GROUP BY atrx;
Sintaksa
SELECT MIN(atribut) FROM tabela;Opomba: funkciji MIN in MAX delata za znakovne, številske in datumske podatke.
SELECT MAX(atribut) FROM tabla;
Funkcija COUNT prešteje, kolikokrat se vrednost atributa atributx pojavi v tabeli. Sintaksa:
SELECT COUNT(atributx) FROM tabela;
Opomba: tudi funkcija COUNT dela za znakovne, številske in datumske podatke.
Primera izvedbe funkcije COUNT brez in z združevanjem zapisov
Funkcija SUM izračuna vsoto vseh vrednosti atributa atributx v tabeli. Sintaksa:
SELECT SUM(atributx) FROM tabela;
Funkcija AVG izračuna povprečno vrednost atributa atributx v tabeli. Pri tem ne upošteva vrstic z vrednostjo NULL. SIntaksa:
SELECT AVG(atributx) FROM tabela;
Obe funkciji se lahko uporabljata le za atribute numeričnega tipa (cela ali realna števila).
Primer izvedbe funkcije AVG brez združevanja zapisov in funkcije SUM z združevanjem zapisov
Stavek SELECT ima 2 tipa pogojev:
- pogoje, ki se nanašajo na vrednosti atributov - zapišemo jih v konstruktu WHERE
- pogoje, ki se nanašajo na vrednosti, ki jih vrnejo funkcije za agregacijo podatkov - zapišemo jih v konstruktu HAVING
Razlika med WHERE in HAVING
- WHERE filtrira podatke, ki bodo agregirani in ne stolpec, ki ga dobimo kot rezultat agregiranje funkcije.
- HAVING filtrira vrstice po izvedbi agregirane funkcije in se sklicuje ravno na stolpec, ki je rezultat funkcije.
Primer: izpis kategorij knjig, ki imajo nadpovprečno ceno
SELECT Book.Type, AVG(Book.Price) AS PovprečjeodPrice
FROM Book
GROUP BY Book.Type
HAVING ((Avg(Book.Price))>(select avg(Book.price) From Book));