SQL GROUP BY

SQL GROUP BY

SQL GROUP BY -lausetta käytetään identtisten tietojen järjestämiseen ryhmiin yhden tai useamman sarakkeen perusteella. Sitä käytetään yleisesti aggregaattifunktioiden, kuten COUNT() SUM() AVG() MAX() ja MIN() kanssa suorittamaan laskelmia kullekin tietoryhmälle.

hedelmät_kuva

Esimerkki: Ensin me teemme luoda demo SQL-tietokanta ja -taulukko, jossa käytämme GROUP BY -komentoa.

Työntekijät

Kysely:

 SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;  

Lähtö:

Ryhmä kyselyn mukaan

Syntaksi:

 SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;  
  • aggregate_function: funktio, jota käytetään yhdistämiseen esim. SUMMA() AVG() COUNT().
  • taulukon_nimi: sen taulukon nimi, josta tiedot valitaan.
  • kunto: Valinnainen ehto rivien suodattamiseksi ennen ryhmittelyä (käytetään WHEREn kanssa).
  • sarake1 sarake2: Sarakkeet, joissa ryhmittelyä käytetään.

Esimerkkejä GROUP BY:stä

Oletetaan, että meillä on opiskelijapöytä. Lisäämme tähän taulukkoon näytetietoja ja suoritamme sitten toimintoja GROUP BY:n avulla ymmärtääksemme, kuinka se ryhmittelee rivejä sarakkeen perusteella ja kokoaa tiedot.

grp

Esimerkki 1: Ryhmittele yhden sarakkeen mukaan

Kun ryhmittelemme yhden sarakkeen mukaan, rivit, joilla on sama arvo kyseisessä sarakkeessa, yhdistetään. Esimerkiksi ryhmittely oppiaineittain näyttää, kuinka monta opiskelijaa kuhunkin aineeseen on ilmoittautunut.

Kysely:

 SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;  

Lähtö:

grp-1

Selitys: Jokainen aihe esiintyy taulukossa kahdesti, joten englannin matematiikan ja luonnontieteiden luku on 2.

Esimerkki 2: Ryhmittele useiden sarakkeiden mukaan

GROUP BY:n käyttäminen useiden sarakkeiden kanssa ryhmittelee rivit, joilla on samat arvot kyseisissä sarakkeissa. Esimerkiksi ryhmittelyssä oppiaineen ja vuoden mukaan yhdistetään rivejä samalla aine-vuosi-parilla ja voimme laskea kuinka monta opiskelijaa kuhunkin ryhmään kuuluu.

Kysely:

 SELECT subject year COUNT(*) FROM Student GROUP BY subject year;  

Lähtö:

opiskelijat-grp

Selitys: Saman aineen ja vuoden opiskelijat ryhmitellään yhteen. Koska jokainen aihe-vuosi-pari esiintyy kahdesti, luku on 2 jokaiselle ryhmälle.

HAVING lauseke GROUP BY -lausekkeessa

HAVING-lausetta käytetään tulosten suodattamiseen ryhmittelyn jälkeen, varsinkin kun työskentelet koostefunktioiden, kuten SUM() COUNT() tai AVG() kanssa. Toisin kuin WHERE, se soveltaa ehtoja ryhmiteltyihin tietoihin.

emp

Esimerkki 1: Suodata kokonaispalkan mukaan

Tässä kyselyssä ryhmittelemme työntekijät nimen mukaan ja näytämme vain ne, joiden kokonaispalkka on yli 50 000.

 SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000;   

Lähtö

ikä-1

Selitys : Tuloksessa näkyvät vain työntekijät, joiden kokonaispalkka on yli 50 000.

Esimerkki 2: Suodata keskipalkan mukaan

Tässä kyselyssä ryhmittelemme työntekijät iän mukaan ja näytämme vain ne ikäryhmät, joissa keskipalkka on yli 60 000.

 SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;  

Lähtö:

lähtö-1

Selitys: Tämä kysely ryhmittelee työntekijät iän mukaan ja laskee kunkin iän keskipalkan. Vain ne ikäryhmät, joiden keskipalkka on yli 60 000, näkyvät.

Luo tietokilpailu