HAVING-Lauseke
Koulu on erittäin kiitollinen työstänne, ja nyt meillä on uusi tehtävä.
On käynyt ilmi, että jotkut opiskelijat osallistuvat ylimääräisiin kokeisiin, vaikka heidän olisi pitänyt osallistua vain yhteen. Koulu epäilee heitä vilpistä, koska jokaisella opiskelijalla tulisi olla vain yksi arvosana.
Meidän tehtävämme on hankkia näiden opiskelijoiden sukunimet ja toimittaa ne koulun hallinnolle, jotta he voivat ryhtyä tarvittaviin toimenpiteisiin.
Pohditaan yhdessä, miten voimme tehdä tämän. Voisit aloittaa miettimällä, että tämä voidaan tehdä käyttämällä WHERE-ehtoa, ja se näyttäisi suunnilleen tältä:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Kuten huomaat, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.
Oletetaan, että täytyy hakea osastot, joissa työntekijöiden keskimääräinen palkka on alle 70 000 dollaria vuodessa.
Tämän saavuttamiseksi tarvitaan aggregaattifunktiota ja HAVING-ehtoa:
1234SELECT 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 tiedot ryhmiteltiin.
Huomio
Jotta voimme käyttää tietojen aggregointia
HAVING-lauseessa, kyselyssä täytyy olla tietojen ryhmittely. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedotdepartment-sarakkeen mukaan.
Tarkastellaan seuraavaksi HAVING-lauseen yleistettyä syntaksia ja tilanteita, joissa sen käyttö on suositeltavaa:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Käydään myös lyhyesti läpi pääasiallinen ero WHERE- ja HAVING-lauseiden välillä sekä tilanteet, joissa kumpaakin käytetään:
WHERE-lausetta käytetään ennen tietojen aggregointia, kun taasHAVING-lausetta käytetään aggregoinnin jälkeen;WHERE-lause kirjoitetaan ennenGROUP BY-lausetta, kun taasHAVING-lause kirjoitetaanGROUP BY-lauseen jälkeen.
Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-lauseen onnistuneessa käytössä. Palataan nyt koulun antamaan tehtävään.
Swipe to start coding
Tehtävänäsi on noutaa niiden opiskelijoiden sukunimet, joilla on useita arvosanoja koulussa.
Sinun tarvitsee hakea vain opiskelijoiden sukunimet; ei tarvitse sisällyttää arvosanojen määrää vastaukseen. Käytä HAVING-ehtoa ja COUNT()-yhteistoimintoa tämän tehtävän suorittamiseen. Järjestä sitten sukunimet aakkosjärjestykseen.
Huom:
Tuloksessa tulee olla vain yksi sarake, jossa on sukunimet.
Lyhyet ohjeet
- Hae
student_surname-sarake. - Ryhmittele tiedot
student_surname-sarakkeen mukaan. - Käytä
HAVING-ehtoa suodattaaksesi tulokset, joissaCOUNT(grade) > 1. - Järjestä tulokset
student_surname-sarakkeen mukaan.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4
HAVING-Lauseke
Pyyhkäise näyttääksesi valikon
Koulu on erittäin kiitollinen työstänne, ja nyt meillä on uusi tehtävä.
On käynyt ilmi, että jotkut opiskelijat osallistuvat ylimääräisiin kokeisiin, vaikka heidän olisi pitänyt osallistua vain yhteen. Koulu epäilee heitä vilpistä, koska jokaisella opiskelijalla tulisi olla vain yksi arvosana.
Meidän tehtävämme on hankkia näiden opiskelijoiden sukunimet ja toimittaa ne koulun hallinnolle, jotta he voivat ryhtyä tarvittaviin toimenpiteisiin.
Pohditaan yhdessä, miten voimme tehdä tämän. Voisit aloittaa miettimällä, että tämä voidaan tehdä käyttämällä WHERE-ehtoa, ja se näyttäisi suunnilleen tältä:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Kuten huomaat, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.
Oletetaan, että täytyy hakea osastot, joissa työntekijöiden keskimääräinen palkka on alle 70 000 dollaria vuodessa.
Tämän saavuttamiseksi tarvitaan aggregaattifunktiota ja HAVING-ehtoa:
1234SELECT 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 tiedot ryhmiteltiin.
Huomio
Jotta voimme käyttää tietojen aggregointia
HAVING-lauseessa, kyselyssä täytyy olla tietojen ryhmittely. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedotdepartment-sarakkeen mukaan.
Tarkastellaan seuraavaksi HAVING-lauseen yleistettyä syntaksia ja tilanteita, joissa sen käyttö on suositeltavaa:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Käydään myös lyhyesti läpi pääasiallinen ero WHERE- ja HAVING-lauseiden välillä sekä tilanteet, joissa kumpaakin käytetään:
WHERE-lausetta käytetään ennen tietojen aggregointia, kun taasHAVING-lausetta käytetään aggregoinnin jälkeen;WHERE-lause kirjoitetaan ennenGROUP BY-lausetta, kun taasHAVING-lause kirjoitetaanGROUP BY-lauseen jälkeen.
Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-lauseen onnistuneessa käytössä. Palataan nyt koulun antamaan tehtävään.
Swipe to start coding
Tehtävänäsi on noutaa niiden opiskelijoiden sukunimet, joilla on useita arvosanoja koulussa.
Sinun tarvitsee hakea vain opiskelijoiden sukunimet; ei tarvitse sisällyttää arvosanojen määrää vastaukseen. Käytä HAVING-ehtoa ja COUNT()-yhteistoimintoa tämän tehtävän suorittamiseen. Järjestä sitten sukunimet aakkosjärjestykseen.
Huom:
Tuloksessa tulee olla vain yksi sarake, jossa on sukunimet.
Lyhyet ohjeet
- Hae
student_surname-sarake. - Ryhmittele tiedot
student_surname-sarakkeen mukaan. - Käytä
HAVING-ehtoa suodattaaksesi tulokset, joissaCOUNT(grade) > 1. - Järjestä tulokset
student_surname-sarakkeen mukaan.
Ratkaisu
Kiitos palautteestasi!
single