Agregirane funkcije

Uporaba funkcij za agregacijo podatkov

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;

Funkciji MIN in MAX

Sintaksa

SELECT MIN(atribut) FROM tabela;
SELECT MAX(atribut) FROM tabla;
Opomba: funkciji MIN in MAX delata za znakovne, številske in datumske podatke.
img122_8
Funkcija COUNT

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.

 

img124_8
Primera izvedbe funkcije COUNT brez in z združevanjem zapisov
Funkciji SUM in AVG

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).

img126_8
Primer izvedbe funkcije AVG brez združevanja zapisov in funkcije SUM z združevanjem zapisov
Pogoji, ki se nanašajo na vrednosti funkcij za agregacijo podatkov

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));