Having-Lauseke
Koulu on erittäin kiitollinen työstänne, ja nyt meillä on uusi tehtävä.
Kävi ilmi, että jotkut opiskelijat suorittivat lisäkokeita, kun heidän piti suorittaa vain yksi. Koulu epäilee heitä huijaamisesta, koska jokaisella opiskelijalla pitäisi olla vain yksi arvosana.
Meille on annettu tehtäväksi hankkia näiden opiskelijoiden sukunimet ja toimittaa ne koulun hallinnolle, jotta he voivat ryhtyä tarvittaviin toimenpiteisiin.
Mietitään yhdessä miten voimme tehdä tämän. Voisit aloittaa harkitsemalla, että voimme tehdä tämän käyttämällä WHERE
-lausetta, ja se näyttäisi tältä:
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Mutta, kuten näet, saamme virheen, joka osoittaa, että emme voi käyttää aggregointifunktioita WHERE
-lauseessa. Tässä tarvitsemme HAVING
-lausetta.
Oletetaan, että meidän täytyy hakea osastot, joissa työntekijöiden keskimääräinen palkka on alle 70 000 dollaria vuodessa.
Tämän saavuttamiseksi meidän on käytettävä aggregointifunktiota ja HAVING
-lausetta:
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Saimme vastauksena yhden osaston käyttämällä HAVING
-lausetta, jossa asetimme ehdon sarakkeelle, jonka mukaan ryhmittelimme tiedot.
Huomio
Käyttääksemme tietojen aggregointia
HAVING
-lauseessa, meidän on oltava tietojen ryhmittely kyselyssämme. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedotdepartment
-sarakkeen mukaan.
Katsotaanpa HAVING
-lauseen yleisempää syntaksia ja milloin sitä on parasta käyttää:
sql
Ymmärretään myös lyhyesti pääero WHERE
- ja HAVING
-lauseiden välillä ja milloin kumpaakin käytetään:
WHERE
-lausetta käytetään ennen tietojen aggregointia, kun taasHAVING
-lausetta käytetään jälkeen tietojen aggregoinnin;WHERE
-lause kirjoitetaan ennenGROUP BY
-lausetta, kun taasHAVING
-lause kirjoitetaan jälkeenGROUP BY
-lausetta.
Nämä ovat kaksi pääeroa, jotka sinun on muistettava HAVING
-lauseen onnistuneeseen käyttöön. Nyt palataan koulun meille antamaan tehtävään.
Swipe to start coding
Tehtäväsi on hakea opiskelijoiden sukunimet, joilla on useita arvosanoja koulussa.
Sinun tarvitsee hakea vain opiskelijoiden sukunimet; ei tarvitse sisällyttää arvosanojen määrää vastaukseen. Käytä HAVING
-lausetta ja COUNT()
-yhteenvetofunktiota tämän tehtävän suorittamiseen. Järjestä sitten sukunimet aakkosjärjestykseen.
Huom:
Tuloksessa tulisi olla vain yksi sarake sukunimillä.
Lyhyet ohjeet
- Hae
student_surname
-sarake. - Ryhmittele tiedot
student_surname
-sarakkeen mukaan. - Käytä
HAVING
-lausetta suodattamaan tulokset perustuenCOUNT(grade) > 1
. - Järjestä tulokset
student_surname
-sarakkeen mukaan.
Ratkaisu
Kiitos palautteestasi!