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.
Esimerkki: Ensin me teemme luoda demo SQL-tietokanta ja -taulukko, jossa käytämme GROUP BY -komentoa.
Kysely:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Lähtö:
![]()
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.
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ö:
![]()
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ö:
![]()
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.
![]()
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ö
![]()
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ö:
![]()
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