Home » Articole » Articole » Calculatoare » Programare » SQL » SQL – SELECT: GROUP BY

SQL – SELECT: GROUP BY

postat în: SQL 0

Aici vom părăsi nivelul rândurilor individuale și vom descrie afirmații care se referă la grupuri de rânduri. În contextul SQL, astfel de „grupuri de rânduri” (sau seturi de rânduri) sunt construite de clauza GROUP BY și procesate în continuare de clauza HAVING.

Constituire grupuri

Mai întâi trebuie să stabilim criterii de filtrare a rândurilor după grupuri. Pentru a face acest lucru, folosim conținutul uneia sau mai multor coloane ale tabelelor implicate. Dacă valorile sunt identice, rândurile aparțin aceluiași grup. Luați în considerare lastname în tabelul person. În exemplul nostru mic, putem insinua că persoanele cu același nume formează o familie. Deci, pentru a vedea informații despre familii, ar trebui să folosim această coloană ca un criteriu de grupare. Această grupare ne permite să punem întrebări referitoare la familii întregi, cum ar fi „Ce familii există?”, „Câte familii există?”, „Câte persoane sunt în fiecare familie?”. Toate acestea sunt întrebări despre întregul grup (care înseamnă familie), nu despre rânduri individuale (care înseamnă persoana).

În sintaxa SQL, criteriul este specificat după cuvântul cheie GROUP BY și constă din unul sau mai multe nume de coloane.

SELECT ...             -- ca de obicei
FROM   ...             -- ca de obicei (opțional plus JOIN)
GROUP BY <column-name>  -- opționall mai multe nume de coloane
...                    -- opțional alte elemente ale comenzii SELECT
;

Exemplul nostru concret despre familii arată astfel:

SELECT lastname
FROM   person
GROUP BY lastname;

Interogarea preia șapte „nume de familie” din cele zece rânduri. Există mai multe persoane cu numele de familie „Goldstein” sau „de Winter”.

Putem prelua aceleași șapte „nume de familie” prin aplicarea cuvântului cheie DISTINCT într-un SELECT fără GROUP BY.

SELECT DISTINCT lastname
FROM   person;
-- no GROUP BY clause

Ce face diferența? Cuvântul cheie DISTINCT este limitat la eliminarea valorilor duplicate. Nu poate iniția calcule pe alte rânduri și coloane ale setului de rezultate. În schimb, GROUP BY aranjează suplimentar rândurile primite intermediare ca mai multe grupuri și oferă posibilitatea de a obține informații despre fiecare dintre aceste grupuri. Este chiar și cazul că în cadrul acestor grupuri sunt disponibile toate coloanele, nu doar coloana-„criteriu”. Pentru a confirma această afirmație despre „toate” coloanele, folosim weight, care nu este coloana-„criteriu”.

SELECT lastname, avg(weight)  -- avg() is a function to compute the arithmetic mean of numerical values
FROM   person
GROUP BY lastname;

Rezultatul arată cele șapte nume de familie – așa cum s-a văzut înainte – plus greutatea medie a fiecărei familii. Greutatea persoanelor individuale nu este afișată. (În grupurile cu exact o singură persoană, greutatea medie a grupului este, desigur, identică cu greutatea unei singure persoane.)

Gruparea pe mai multe coloane

Dacă este necesar, putem defini gruparea pe mai multe coloane. În acest caz, ne putem imagina concatenarea coloanelor ca regulă de grupare.

-- Group over one column: place_of_birth leads to 6 resulting rows
SELECT place_of_birth, count(*)
FROM   person
GROUP BY place_of_birth;
-- Group over two columns: place_of_birth plus lastname leads to 8 resulting rows with Richland and SF shown twice
SELECT place_of_birth, lastname, count(*)
FROM   person
GROUP BY place_of_birth, lastname;

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

Analitica rețelelor sociale
Analitica rețelelor sociale

Analitica rețelelor sociale este un domeniu nou și emergent, pregătit pentru a permite companiilor să își îmbunătățească inițiativele de gestionare a performanței în diferite funcții de afaceri. Indiferent dacă este vorba de măsurarea eficienței campaniilor promoționale, colectarea de informații despre … Citeşte mai mult

Nu a fost votat $3.99 Selectează opțiunile
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 $4.99$11.99 Selectează opțiunile
Lucrul cu baze de date
Lucrul cu baze de date

Colecția ȘTIINȚA INFORMAȚIEI Lucrul cu bazele de date este astăzi printre cele mai căutate abilități IT. Acum puteți obține o bază de plecare în proiectarea și implementarea bazelor de date cu o abordare practică, ușor de înțeles. ”Lucrul cu baze … Citeşte mai mult

Nu a fost votat $3.99$7.99 Selectează opțiunile

Lasă un răspuns

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