InfoBook.ro ← Harta anului
Modul 06 · SQL — agregate & JOIN
Modul 06 · Conținut 3.1 · limbaj

Rezumă și combină

Până acum ai cerut rânduri. Acum întrebi lucruri despre GRUPURI de rânduri (câte, cât în total, media) cu funcții agregate — și aduni date din MAI MULTE tabele deodată, cu JOIN.

🎯 Obiectiv 1Folosești COUNT, SUM, AVG, MIN, MAX și tratezi NULL.
🎯 Obiectiv 2Grupezi cu GROUP BY și filtrezi grupuri cu HAVING.
🎯 Obiectiv 3Combini tabele pe cheie cu JOIN (INNER vs LEFT).
1

Funcțiile agregate — un număr dintr-o coloană întreagă

Primesc o coloană (mai multe valori) și întorc UNA singură: un total, o medie, un maxim.

funcție
funcțiece face
COUNT(*)câte rânduri
SUM(col)suma valorilor
AVG(col)media
MIN / MAX(col)cea mai mică / mare valoare
atenție la NULL
NULL = valoare lipsă (nu 0, nu ""!). Funcțiile agregate ignoră NULL: AVG(nota) face media doar peste notele existente. Dar COUNT(*) numără toate rândurile, iar COUNT(nota) doar pe cele cu notă.
2

Laborator: agregate cu GROUP BY

Raportul lanțului de restaurante. Alege o funcție agregată și, opțional, gruparea — lecția scrie SQL-ul și îl calculează live.

VANZARI

SELECT GROUP BY
Regula GROUP BY: tot ce e în SELECT și NU e agregat trebuie să apară în GROUP BY. Grupezi rândurile după o coloană, apoi calculezi agregatul pentru fiecare grup. HAVING filtrează GRUPURILE (ex: HAVING SUM(cantitate) > 4) — spre deosebire de WHERE, care filtrează rândurile înainte de grupare.
3

JOIN — datele din două tabele, împreună

Datele normalizate stau în tabele separate (Modul 03). JOIN le reunește pe cheia comună — exact interclasarea pe chei din clasa a X-a (M02).

SELECT c.nume, o.total FROM clienti c JOIN comenzi o ON c.id_client = o.id_client;
Cum funcționează: pentru fiecare rând din COMENZI, SQL caută în CLIENTI rândul cu aceeași id_client și le lipește. Condiția de după ON e „lipiciul" — de obicei cheie externă = cheie primară.
4

Vizualizator JOIN — INNER vs LEFT

Aceleași două tabele, două feluri de a le lipi. Vezi ce se întâmplă cu clientul fără comenzi.

CLIENTI

COMENZI

rezultat

Diferența: INNER JOIN păstrează doar rândurile care au pereche în ambele tabele (Carla, fără comenzi, dispare). LEFT JOIN păstrează TOATE rândurile din tabela din stânga (CLIENTI); unde nu există pereche, completează cu NULL.
5

Verificare rapidă

Șase întrebări despre agregate și JOIN.

6

Fișa de sinteză

Agregate & JOIN, condensat.

Agregate: COUNT, SUM, AVG, MIN, MAX — o valoare dintr-o coloană întreagă.
NULL = valoare lipsă; agregatele îl ignoră; COUNT(*) numără toate rândurile.
GROUP BY col: calculează agregatul pentru fiecare grup.
HAVING filtrează grupuri (după agregare); WHERE filtrează rânduri (înainte).
JOIN ... ON combină tabele pe cheia comună (FK = PK).
INNER = doar perechile existente; LEFT = toate din stânga, NULL unde lipsește.
← anteriorModul 05 · SQL — SELECT urmează →Modul 07 · SQL — DML & DDL