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)

Introducere în inteligența artificială
Introducere în inteligența artificială

Pășește în era digitală pregătit să înțelegi și să aplici conceptele care schimbă lumea!

Nu a fost votat 14.32 lei25.09 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Big Data: Modele de afaceri - Securitatea megadatelor
Big Data: Modele de afaceri – Securitatea megadatelor

Nu rata oportunitatea de a rămâne competitiv într-o lume bazată pe date!

Nu a fost votat 19.11 lei28.68 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Căutarea, extragerea, organizarea și evaluarea informațiilor
Căutarea, extragerea, organizarea și evaluarea informațiilor

Transformă informația în putere cu ajutorul acestei cărți indispensabile!

Nu a fost votat 19.11 lei46.02 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 *