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.
kevät pilvi
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