MIN, MAX en aggregatie van niet-numerieke waarden
Datums en tekenreeksen aggregeren en de betekenis van MIN voor tekst begrijpen
MIN, MAX en aggregatie van niet-numerieke waarden is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.
MIN en MAX buiten getallen
Kandidaten gaan ervan uit dat MIN en MAX alleen met getallen werken. Interviewers stellen graag de vraag: "Wat geeft MAX(name) terug? En MIN(order_date)?"
De waarheid: MIN en MAX werken met elk type dat geordend kan worden — getallen, datums en tekenreeksen. De echte vaardigheid die hier wordt getoetst, is het begrijpen van de ordeningsregels voor elk type.
Het numerieke geval
Begin met het bekende. Bij numerieke kolommen retourneert MIN de kleinste waarde en MAX de grootste. Simpel.
Net als de andere aggregaties negeren MIN en MAX NULL-waarden. Een NULL-waarde is nooit de minimum- of maximumwaarde; die wordt simpelweg overgeslagen. Als elke waarde NULL is, retourneren beide NULL.
SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;MIN en MAX voor datums
Datums en tijdstempels zijn volledig ordenbaar, dus MIN(order_date) geeft de vroegste datum en MAX(order_date) de laatste.
Zo beantwoord je de vragen "wanneer is de eerste bestelling geplaatst?" (MIN) en "wat is de meest recente activiteit?" (MAX) zonder te sorteren en te beperken. Dit is de gebruikelijke, op sets gebaseerde oplossing.
SELECT
MIN(order_date) AS first_order,
MAX(order_date) AS latest_order
FROM orders;Datumbereik in één query
Een veelvoorkomende vervolgvraag is: "Hoe lang is deze klant al actief?" Combineer MIN en MAX en trek ze vervolgens van elkaar af.
Hiermee bereken je de periode tussen de eerste en laatste bestelling. De precieze syntaxis voor het aftrekken verschilt per dialect, maar het idee achter MIN/MAX is universeel en laat zien dat je bereiken declaratief kunt uitdrukken.
SELECT
customer_id,
MIN(order_date) AS first_order,
MAX(order_date) AS last_order,
MAX(order_date) - MIN(order_date) AS active_days
FROM orders
GROUP BY customer_id;MIN en MAX voor tekenreeksen
Dit is het deel dat mensen vaak verrast. Voor tekstkolommen gebruiken MIN en MAX een lexicografische (alfabetische) volgorde op basis van de collatie van de kolom.
MIN(name) geeft dus de naam die alfabetisch als eerste wordt gesorteerd, en MAX(name) de naam die als laatste wordt gesorteerd. MIN over {'Carol', 'Alice', 'Bob'} geeft 'Alice'; MAX geeft 'Carol'.
SELECT MIN(name) AS first_alpha, MAX(name) AS last_alpha
FROM employees;
-- with Alice, Bob, Carol: 'Alice' and 'Carol'Collatie en hoofdlettergevoeligheid
De volgorde van tekenreeksen hangt af van de collatie, die de hoofdlettergevoeligheid en regels voor landinstellingen bepaalt. Bij veel standaardcollaties kunnen hoofdletters vóór kleine letters worden gesorteerd, waardoor MAX van {'apple', 'Banana'} je kan verrassen.
Noem in een sollicitatiegesprek dat de resultaten van MIN/MAX voor tekenreeksen afhankelijk zijn van de collatie. Die nuance maakt het verschil tussen een uit het hoofd geleerd antwoord en echt begrip.
Wat MIN(text) NIET betekent
Een veelvoorkomende misvatting is dat MIN(name) de kortste tekenreeks geeft of MAX(name) de langste. Dat is niet zo. Het gaat puur om de sorteervolgorde, niet om de lengte.
Als je daadwerkelijk de langste tekenreeks nodig hebt, sorteer je op LENGTH(name) en kies je de eerste rij, of gebruik je MAX(LENGTH(name)) als je alleen de lengte nodig hebt. Verwar de volgorde van waarden niet met hun lengte.
SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;MIN/MAX combineren geen kolommen
Belangrijke valkuil: MIN en MAX werken onafhankelijk op één kolom. Ze geven niet de volledige rij terug waarin de minimum- of maximumwaarde staat.
Als je SELECT MIN(salary), name schrijft zonder GROUP BY, krijg je niet de naam van de werknemer met het laagste salaris — je krijgt een fout of een willekeurige naam, afhankelijk van het dialect. Gebruik ORDER BY + LIMIT of een windowfunctie om de volledige rij op te halen.
-- Wrong assumption: this does NOT give the lowest earner's name.
-- Correct approach to get the whole row:
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 1;Herhaling van NULL-gedrag bij MIN/MAX
Net als SUM en AVG slaan MIN en MAX NULL-waarden over. Een NULL is noch de kleinste, noch de grootste waarde.
- Gemengde waarden + NULL-waarden: NULL-waarden worden genegeerd en het echte minimum of maximum wordt teruggegeven.
- Alle waarden zijn NULL of er zijn geen rijen: MIN en MAX geven NULL terug.
Deze consistentie tussen aggregatiefuncties is een helder punt om te noemen: "Alle standaardaggregatiefuncties negeren NULL-waarden."
In een groep gebruiken
MIN en MAX komen goed tot hun recht met GROUP BY voor minimum- en maximumwaarden per groep. "Het hoogste salaris per afdeling" is een schoolvoorbeeld.
Dit geeft één rij per afdeling terug met het hoogste salaris van die afdeling. Onthoud: je krijgt de waarde, niet de werknemer. De naam erbij zetten is een afzonderlijk (en veelvoorkomend) vervolgvraagstuk.
SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;Zo antwoord je zelfverzekerd
Een sterk antwoord in een sollicitatiegesprek is: "MIN en MAX werken op elk ordenbaar type. Voor getallen gaat het om het kleinste en grootste getal, voor datums om de vroegste en laatste datum en voor tekenreeksen om de alfabetische volgorde volgens de collatie van de kolom. Ze negeren NULL-waarden en geven alleen NULL terug als er geen niet-NULL-waarde bestaat. Ze geven één waarde terug, niet de volledige rij. Om de rij op te halen zou ik ORDER BY met LIMIT of een windowfunctie gebruiken."
Korte controle
Denk na over aggregatie van tekenreeksen.
Samenvatting
Alles over MIN en MAX:
- Werken op elk ordenbaar type: getallen, datums en tekenreeksen.
- Voor tekenreeksen geldt de alfabetische volgorde volgens de collatie, niet de lengte.
- Datums: MIN = vroegste, MAX = laatste.
- Ze negeren NULL-waarden; bij alleen NULL-waarden of geen rijen wordt NULL teruggegeven.
- Ze geven een waarde terug, niet de volledige rij — gebruik daarvoor ORDER BY + LIMIT.
Volgende: wat gebeurt er als je aggregatiefuncties zonder GROUP BY gebruikt.
Leer SQL met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “MIN, MAX en aggregatie van niet-numerieke waarden” gratis?
Ja — de volledige tekst van “MIN, MAX en aggregatie van niet-numerieke waarden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.
Wat leer ik in “MIN, MAX en aggregatie van niet-numerieke waarden”?
Datums en tekenreeksen aggregeren en de betekenis van MIN voor tekst begrijpen Je oefent met Voorbereiding op SQL-sollicitatiegesprekken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op SQL-sollicitatiegesprekken te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “MIN, MAX en aggregatie van niet-numerieke waarden”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op SQL-sollicitatiegesprekken?
Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- COUNT(*) versus COUNT(column) versus COUNT(DISTINCT)
- SUM en AVG met NULL's
- MIN, MAX en aggregatie van niet-numerieke waarden
- Aggregaties zonder GROUP BY