Home » Articole » Articole » Calculatoare » Programare » SQL » SQL: SELECT: GROUP BY – Focalizarea pe grupurile dorite

SQL: SELECT: GROUP BY – Focalizarea pe grupurile dorite

postat în: SQL 0

Știți clauza WHERE. Aceasta definește ce rânduri ale unui tabel vor face parte din setul de rezultate. Clauza HAVING are aceeași semnificație la nivel de grup. Acesta determină ce grupuri vor face parte din setul de rezultate.


-- HAVING completează GROUP BY
SELECT ...
FROM   ...
GROUP BY <columnname>
HAVING <having clause>; -- specificați un criteriu care poate fi aplicat grupurilor

Preluăm exclusiv familii cu mai mult de 1 membru:


SELECT lastname
FROM   person
GROUP BY lastname    -- gruparea peste nume de familie
HAVING count(*) > 1; -- mai mult de o persoană în cadrul grupului

Toate familiile cu un membru nu mai fac parte din rezultat.

Într-un al doilea exemplu, ne concentrăm pe astfel de grupuri care îndeplinesc un criteriu privind coloana firstname. Luați în considerare că firstname nu este coloana de grupare.


-- Grupuri care conțin o persoană al cărei prenume are mai mult de 4 caractere: 5 rânduri rezultate
SELECT lastname
FROM   person
GROUP BY lastname
HAVING max(length(firstname)) > 4; -- max() returnează valoarea ONE (cea mai mare) pentru toate rândurile fiecărui grup 'lastname'

Rezultatul arată cele cinci familii Baker, de Winter, Goldstein, Rich și Stefanos (dar nu rândul(rândurile) cu firstname lung).

Vă rugăm să rețineți că acest rezultat este foarte diferit de interogarea similară pentru persoanele al căror prenume are mai mult de patru caractere:


-- Persoane al căror prenume are mai mult de patru caractere: șase rânduri rezultate!!
SELECT lastname, firstname
FROM   person
WHERE  length(firstname) > 4;
-- fără GROUP BY și fără HAVING. WHERE nu este un înlocuitor echivalent pentru HAVING!!

De unde vine rândul suplimentar? În familia de Winter, există două persoane cu un prenume mai lung de patru caractere: James și Victor. Pentru că în comanda fără GROUP BY selectăm pentru persoane și nu pentru familii, ambele rânduri sunt afișate individual.

Pe scurt, putem spune că clauza HAVING decide care grupuri fac parte din setul de rezultate și care nu.

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Căutarea, extragerea, organizarea și evaluarea informațiilor
Căutarea, extragerea, organizarea și evaluarea informațiilor

Informația, ca și concept, include o mare diversitate de sensuri în contexte diferite, de la cele zilnice până la cele tehnice. Conceptul de informație este strâns legat de noțiunile de restricție, comunicare, control, date, forme, educație, cunoaștere, înțelegere, stimul mental, … Citeşte mai mult

Nu a fost votat 19.07 lei45.93 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Tehnologia Blockchain - Bitcoin
Tehnologia Blockchain – Bitcoin

Internetul a schimbat complet lumea, cultura şi obiceiurile oamenilor. După o primă fază caracterizată prin transferul liber al informaţiilor, au apărut preocupările pentru siguranţa comunicaţiilor online şi confidenţialitatea utilizatorilor. Tehnologia blockchain asigură ambele aceste deziderate. Relativ nouă, ea are şansa să producă … Citeşte mai mult

Nu a fost votat 23.85 lei57.31 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Excel - Ghid pentru începători
Excel – Ghid pentru începători

Acest ghid este destinat să vă ajute să învățați și să lucrați cu Microsoft Excel. Se bazează pe utilizarea Excel 2016 pe un computer Windows, dar conceptele și instrumentele acoperite rămân destul de consistente cu unele versiuni mai vechi de … Citeşte mai mult

Nu a fost votat 0.00 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *