6.1 Lista funcțiilor agregate
Când utilizați gruparea de rânduri în SQL cu operatorul GROUP BY
, puteți utiliza SELECT
funcț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 |
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 :)
GO TO FULL VERSION