Functii de grup
Opereaza asupra multimilor de
inregistrari pentru a oferi un rezultat per grup. Functiile
de grup recunoscute de server-ul Oracle sunt: AVG, SUM,
MAX, MIN, COUNT, STDDEV si VARIANCE. Acestea, de regula,
intorc ca rezultat un tabel cu o singura celula.
Daca insa se va utiliza
clauza GROUP BY se va produce o divizare a randurilor din tabel
in grupuri , functiile de grup vor fi aplicate fiecaruia din aceste
grupuri, iar rezultatul va contine un numar de randuri egal cu numarul
grupurilor formate.
Toate functiile de grup
accepta un singur argument care poate fi de tip CHAR, VARCHAR2,
NUMBER sau DATE.
Toate functiile de grup, cu exceptia functiei COUNT(*) ignora valorile
null.
Pentru a substitui valoarea null cu o valoare definita se va folosi
functia NVL.
Server-ul Oracle sorteaza implicit multimea rezultat
ascendent dupa coloanele de grupare (cand se utilizeaza clauza GROUP BY).
Pentru a schimba aceasta ordonare implicita se poate folosi clauza
ORDER
BY cu optiunea DESC.
Forma generala pentru o interogare continind functii de grup este:
SELECT [coloane,] fct_grup (col)...
FROM tabel
WHERE conditii
GROUP BY expresie de grupare
HAVING conditii de grup
ORDER BY col;
Exemple
SELECT AVG (salary), STDDEV(salary), COUNT(commission_pct), MAX (hire_date)
FROM employees
WHERE job_id LIKE 'SA%';
SELECT department_id, job_id, SUM (salary), COUNT(employee_id)
FROM employees
GROUP BY department_id, job_id
HAVING SUM(salary)>12000;
SELECT department_id, job_id, SUM (salary), COUNT(employee_id)
FROM employees
GROUP BY department_id, job_id
ORDER BY deparment_id desc;