Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer HAVING-Clausule | Groeperen
Intermediair SQL
Sectie 1. Hoofdstuk 6
single

single

HAVING-Clausule

Veeg om het menu te tonen

Het informatiesysteem van de school wordt herzien om gegevensconsistentie en nauwkeurigheid te waarborgen. Als onderdeel van deze herziening is een nieuwe data-analysetaak toegewezen.

Tijdens routinematige controles werd ontdekt dat sommige leerlingendossiers meer dan één cijfervermelding bevatten, terwijl het systeem is ontworpen om slechts één cijfer per leerling op te slaan.

Jouw taak is om dergelijke gevallen te identificeren voor verder intern onderzoek.

Denk na over hoe je dit kunt doen. Je zou kunnen beginnen met het overwegen dat je dit kunt doen met een WHERE-clausule, en het zou er ongeveer zo uitzien:

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

Maar, zoals je kunt zien, krijgen we een foutmelding die aangeeft dat je geen aggregatiefuncties kunt gebruiken binnen een WHERE-clausule. Hiervoor heb je de HAVING-clausule nodig.

Stel dat je de afdelingen wilt ophalen waar het gemiddelde salaris van werknemers lager is dan $70.000 per jaar. Om dit te bereiken, moeten we een aggregatiefunctie en de HAVING-clausule gebruiken:

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

Het resultaat is één afdeling als antwoord met behulp van de HAVING-clausule, waarbij een voorwaarde wordt ingesteld voor de kolom die wordt gebruikt voor groepering.

Note
Opmerking

Om gegevensaggregatie te gebruiken binnen de HAVING-clausule, moet er gegevensgroepering in onze query zijn. Zoals in de bovenstaande query hebben we de gegevens gegroepeerd op de kolom department.

Hier volgt een meer algemene syntaxis van de HAVING-clausule en wanneer deze het beste kan worden gebruikt:

SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

-- This will cause an error

Hier volgt een kort overzicht van het belangrijkste verschil tussen de WHERE- en HAVING-clausules en wanneer je welke gebruikt:

  1. De WHERE-clausule wordt gebruikt voor data-aggregatie, terwijl de HAVING-clausule wordt gebruikt na data-aggregatie;
  2. De WHERE-clausule wordt voor GROUP BY geschreven, terwijl de HAVING-clausule na GROUP BY wordt geschreven.

Dit zijn de twee belangrijkste verschillen die je moet onthouden voor het succesvol gebruiken van de HAVING-clausule. Ga nu terug naar de opdracht die we van de school hebben gekregen.

Taak

Veeg om te beginnen met coderen

Sommige studenten komen meerdere keren voor in de cijferregistraties, wat duidt op dubbele of onverwachte vermeldingen in het systeem.

Je moet de achternamen ophalen van alle studenten van wie de gegevens meer dan één cijfervermelding bevatten. Het resultaat zal door de schooladministratie worden gebruikt om de gegevens te controleren en indien nodig te corrigeren.

Geef alleen de lijst met achternamen die aan deze voorwaarde voldoen, alfabetisch gesorteerd.

Korte instructies

  • Haal de kolom student_surname op.
  • Groepeer de gegevens op student_surname.
  • Gebruik de HAVING-clausule om de resultaten te filteren op basis van COUNT(grade) > 1.
  • Sorteer de resultaten op student_surname.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 6
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt