6.1 Lista funcțiilor agregate

Când utilizați gruparea de rânduri în SQL cu operatorul GROUP BY, puteți utiliza SELECTfuncții din instrucțiune care operează pe datele grupate. Astfel de funcții sunt numite și funcții agregate.

Iată o listă cu cele mai populare:

# Funcţie Descriere
1 NUMARA() Returnează numărul de valori dintr-un grup
2 SUMĂ() Returnează suma valorilor dintr-un grup
3 MAX() Returnează valoarea maximă a unui grup
4 MIN() Returnează valoarea minimă a unui grup
5 AVG() Returnează media unui grup
6 BIT_AND() Efectuează un AND pe biți peste toate valorile grupului
7 BIT_OR() Efectuează un SAU pe biți peste toate valorile grupului
8 BIT_XOR() Efectuează un XOR pe biți peste toate valorile grupului
9 GROUP_CONCAT() Concatenează toate valorile grupului într-un șir
Aceasta nu este o listă completă de funcții agregate, dar restul sunt foarte specifice și nu cred că le vei folosi în următorii 5 ani.Dacă mai ai nevoie de ele, poți oricând să citești documentația oficială pentru SGBD-ul tău.

Acum să ne uităm la câteva exemple cu funcțiile noastre agregate.

6.2 Analiza salariilor angajatilor

Să calculăm câteva statistici despre angajații noștri din tabelul angajaților .

Întrebarea 1: câți angajați avem?

Dacă dorim să aflăm numărul tuturor înregistrărilor din tabel, atunci putem folosi funcția de agregare pentru aceasta COUNT. Cererea va arăta astfel:

SELECT COUNT(*) FROM employee

Iar MySQL va returna ca răspuns numărul 6. Avem 6 angajați în departament, inclusiv o pisică. În regulă.

Întrebarea a doua: cât plătim pe lună tuturor angajaților?

Pentru a răspunde la această întrebare, trebuie să însumăm salariile tuturor angajaților. Pentru a face acest lucru, folosim funcția de agregareSUM()

Cererea va arăta astfel:

SELECT SUM(salary) FROM employee

Rețineți că de data aceasta ni se cere să specificăm valorile coloanei pe care o rezumăm. Am specificat o coloană de salariu . Nu putem doar să însumăm toate câmpurile dintr-un tabel.

Și MySQL va returna ca răspuns numărul 461000. Avem 6 angajați în departament, iar salariul este de 461 mii. Prea mult.

Și în sfârșit, a treia întrebare: care sunt salariile noastre maxime și minime în catedră? Ei bine, să calculăm salariul mediu. Pentru a face acest lucru, avem nevoie de funcțiile MIN, MAXși AVG.

Interogarea va fi ceva mai complexă de data aceasta și va arăta astfel:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

Rezultatul acestei interogări va fi:

MIN(salariu) AVG(salariu) MAX(salariu)
1000 76833.3333 200000

Salariul minim în departamentul nostru este de 1.000 de dolari – foarte bun. Salariul maxim este de 200 de mii, dar acesta este directorul.

Dar salariul mediu este prea mare, trebuie să optimizați cumva costurile. Hai sa mai angajam o pisica si gata :)