Sunteți pe pagina 1din 2

Funcii de agregare n SQL

Funciile de agregare sunt funcii utilizate n interogri i returneaz o singur linie rezultat pe baza unui
grup de linii. Pot fi utilizate n cadrul listei select i n clauzele ORDER BY i HAVING.
Sunt utilizate n general mpreun cu clauza GROUP BY care specific mprirea liniilor tabelului
interogat n grupuri; Oracle aplic funciile de agregare fiecrui astfel de grup returnnd un singur
rezultat pentru fiecare grup. Dac clauza GROUP BY este omis funciile de agregare sunt aplicate peste
toate liniile tabelului interogat.
Reamintim sintaxa interogrii n Oracle:

SELECT [DISTINCT | ALL] {* | [expresie_coloana [AS nume_nou]] [,...] }


FROM nume_tabel [alias] [, ...]
[WHERE conditie]
[GROUP BY expresie [HAVING conditie] ]
[ORDER BY expresie1 [ASC|DESC][,]]
Clauza WHERE elimin valori individuale (linii) nainte de a avea loc gruparea Clauza HAVING este
utilizat doar n conjuncie cu clauza GROUP BY avnd rolul de a elimina unele grupuri pe baza
rezultatului funciilor de agregare i nu a valorilor individuale ale liniilor.
Valori individuale nu pot fi utilizate n lista select dect dac n clauz GROUP BY este specificat coloana
individual. Deci toate cmpurile din lista select care nu sunt utilizate n cadrul funciilor de agregare
trebuie s apar n clauz GROUP BY.
Dac clauz ORDER BY este omis, n prezena clauzei GROUP BY rezultatul este sortat ascendent n
funcie de expresia de grupare (cmpurile incluse n expresie).
Funciile de agregare pot accepta clauzele
DISTINCT specific luarea n considerare doar a valorilor distincte de ctre funcie
ALL este implicit, determin funcia de agregare sa calculeze rezultatul pe baza tuturor valorilor
Toate funciile de agregare ignor valorile NULL. Excepie face funcia COUNT cu argumentul * care va
considera NULL ca fiind o valoare distinct. Pentru ca valoarea NULL s fie luat n considerare se poate
utiliza NVL n cadrul funciei de agregare pentru a substitui NULL cu o valoare anume (ex. 0).
Dac setul de date nu conine linii sau conine doar linii cu valori NULL ca argumente a funciilor de
agregare, funcia va returna NULL. Excepie face COUNT care returneaz 0 sau un alt numr.
AVG
([DISTINCT|ALL]n)
COUNT
({ *|
[DISTINCT|ALL] expr})

Returneaz media valorilor.


Argumentul trebuie s fie numeric.
Returneaz numrul de linii. Dac
argumentul este * se numr i
valorile NULL, altfel se numr doar
valorile nenule. Argumentul poate
lua tipul CHAR, VARCHAR2, NUMBER,
DATE.

SELECT AVG(SAL) FROM EMP;


SELECT COUNT(*) "Total"
FROM emp;
SELECT COUNT(DISTINCT
job) "Jobs" FROM emp;

MAX
([DISTINCT|ALL]expr)
MIN
([DISTINCT|ALL]expr)
STDEV
([DISTINCT|ALL]x)
VARIANCE
([DISTINCT|ALL]x)
SUM
([DISTINCT|ALL]n)

Returneaz valoare maxim.


Argumentul poate lua tipul CHAR,
VARCHAR2, NUMBER, DATE
Returneaz valoare minim.
Argumentul poate lua tipul CHAR,
VARCHAR2, NUMBER, DATE
Returneaz variana valorilor.
Argumentul trebuie s fie numeric.
Returneaz variana valorilor.
Argumentul trebuie s fie numeric.
Returneaz suma valorilor.
Argumentul trebuie s fie numeric.

SELECT MAX(SAL) FROM EMP;

SELECT MIN(SAL) FROM EMP;

SELECT STDDEV(sal)
"Deviation" FROM emp;
SELECT VARIANCE(sal)
"Variance" FROM emp;
SELECT deptno, SUM(sal)
TotalSalary FROM emp
GROUP BY deptno;

S-ar putea să vă placă și