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

bookHAVING-Ehto

Koulu on erittäin kiitollinen työstänne, ja nyt meillä on uusi tehtävä.

On käynyt ilmi, että jotkut opiskelijat osallistuivat 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ä tarpeellisiin toimenpiteisiin.

Pohditaan yhdessä, miten voimme tehdä tämän. Voisit aloittaa miettimällä, että tämän voisi toteuttaa käyttämällä WHERE-ehtoa, ja se näyttäisi suunnilleen tältä:

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

Kuten huomaat, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.

Oletetaan, että meidän täytyy hakea osastot, joissa työntekijöiden keskiansio on alle 70 000 dollaria vuodessa. Tämän saavuttamiseksi meidän täytyy käyttää aggregaattifunktiota ja HAVING-ehtoa:

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

Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan ryhmittelimme tiedot.

Huomio

Jotta voimme käyttää tietojen aggregointia HAVING-ehdon sisällä, kyselyssämme täytyy olla tietojen ryhmittely. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedot department-sarakkeen mukaan.

Tarkastellaan seuraavaksi HAVING-ehdon 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-ehtojen välillä sekä tilanteet, joissa kumpaakin käytetään:

  1. WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taas HAVING-ehtoa käytetään aggregoinnin jälkeen;
  2. WHERE-ehto kirjoitetaan ennen GROUP BY -lausetta, kun taas HAVING-ehto kirjoitetaan GROUP BY -lauseen jälkeen.

Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-ehdon onnistunutta käyttöä varten. Palataan nyt koulun antamaan tehtävään.

Tehtävä

Swipe to start coding

Tehtävänäsi on noutaa 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, joissa COUNT(grade) > 1.
  • Järjestä tulokset student_surname-sarakkeen mukaan.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you show me how to write the correct SQL query to find those students?

Can you explain why the HAVING clause works in this situation?

Can you give another example of using HAVING with a different aggregate function?

close

Awesome!

Completion rate improved to 4

bookHAVING-Ehto

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 osallistuivat 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ä tarpeellisiin toimenpiteisiin.

Pohditaan yhdessä, miten voimme tehdä tämän. Voisit aloittaa miettimällä, että tämän voisi toteuttaa käyttämällä WHERE-ehtoa, ja se näyttäisi suunnilleen tältä:

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

Kuten huomaat, saamme virheilmoituksen, joka osoittaa, että emme voi käyttää aggregaattifunktioita WHERE-ehdon sisällä. Tässä kohtaa tarvitsemme HAVING-ehtoa.

Oletetaan, että meidän täytyy hakea osastot, joissa työntekijöiden keskiansio on alle 70 000 dollaria vuodessa. Tämän saavuttamiseksi meidän täytyy käyttää aggregaattifunktiota ja HAVING-ehtoa:

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

Saimme vastauksena yhden osaston käyttämällä HAVING-ehtoa, jossa asetimme ehdon sarakkeelle, jonka mukaan ryhmittelimme tiedot.

Huomio

Jotta voimme käyttää tietojen aggregointia HAVING-ehdon sisällä, kyselyssämme täytyy olla tietojen ryhmittely. Kuten yllä olevassa kyselyssä, ryhmittelimme tiedot department-sarakkeen mukaan.

Tarkastellaan seuraavaksi HAVING-ehdon 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-ehtojen välillä sekä tilanteet, joissa kumpaakin käytetään:

  1. WHERE-ehtoa käytetään ennen tietojen aggregointia, kun taas HAVING-ehtoa käytetään aggregoinnin jälkeen;
  2. WHERE-ehto kirjoitetaan ennen GROUP BY -lausetta, kun taas HAVING-ehto kirjoitetaan GROUP BY -lauseen jälkeen.

Nämä ovat kaksi tärkeintä eroa, jotka tulee muistaa HAVING-ehdon onnistunutta käyttöä varten. Palataan nyt koulun antamaan tehtävään.

Tehtävä

Swipe to start coding

Tehtävänäsi on noutaa 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, joissa 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!

close

Awesome!

Completion rate improved to 4
Osio 1. Luku 6
single

single

some-alt