Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Having-Lauseke | Ryhmittely
Keskitaso SQL

Pyyhkäise näyttääksesi valikon

book
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ä:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

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:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

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 tiedot department-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:

  1. WHERE-lausetta käytetään ennen tietojen aggregointia, kun taas HAVING-lausetta käytetään jälkeen tietojen aggregoinnin;

  2. WHERE-lause kirjoitetaan ennenGROUP BY-lausetta, kun taas HAVING-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.

Tehtävä

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 perustuen COUNT(grade) > 1.
  • Järjestä tulokset student_surname-sarakkeen mukaan.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6

Kysy tekoälyä

expand
ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

book
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ä:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

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:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

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 tiedot department-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:

  1. WHERE-lausetta käytetään ennen tietojen aggregointia, kun taas HAVING-lausetta käytetään jälkeen tietojen aggregoinnin;

  2. WHERE-lause kirjoitetaan ennenGROUP BY-lausetta, kun taas HAVING-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.

Tehtävä

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 perustuen COUNT(grade) > 1.
  • Järjestä tulokset student_surname-sarakkeen mukaan.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Pahoittelemme, että jotain meni pieleen. Mitä tapahtui?
some-alt