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;