De SQLite max()
functie retourneert de maximale waarde van alle waarden in een groep.
De maximale waarde is de waarde die als laatste zou verschijnen in een zoekopdracht die gebruikmaakt van een ORDER BY
clausule in dezelfde kolom.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT max(Price) FROM Products;
Resultaat:
389.45
Hier is een zoekopdracht die alle rijen in die tabel retourneert.
SELECT * FROM Products
ORDER BY Price;
Resultaat:
ProductId ProductName Price ---------- ----------- ---------- 5 Red Widget 3 Widget Open 89.27 4 Foobar Set 120.0 2 Widget Hold 139.5 1 Blue Widget 389.45
Merk op dat de eerste rij een NULL-waarde heeft voor de prijs. De max()
functie negeert dat, omdat de andere rijen niet-NULL-waarden hebben. Als alle rijen NULL waren, dan max()
zou NULL teruggeven.
Ik gebruikte de ORDER BY
clausule in dit voorbeeld. Zoals gezegd, de max()
functie retourneert de waarde die als laatste verschijnt bij gebruik van deze clausule (ervan uitgaande dat u de kolom in oplopende volgorde ordent, wat de standaard is).
Voor de duidelijkheid, ik had het volgende kunnen gebruiken voor hetzelfde resultaat:
SELECT * FROM Products
ORDER BY Price ASC;
Combineer Max() met Aantal()
Hier is een voorbeeld dat de max()
. combineert functie met de count()
functie om het maximale aantal terug te geven.
SELECT max(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Resultaat:
21
We kunnen dit verifiëren door een andere zoekopdracht uit te voeren met een ORDER BY
clausule.
SELECT
ar.Name,
count(al.Title) AS AlbumCount
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
GROUP BY ar.Name
ORDER BY AlbumCount DESC
LIMIT 10;
Resultaat:
Name AlbumCount -------------------- ---------- Iron Maiden 21 Led Zeppelin 14 Deep Purple 11 Metallica 10 U2 10 Ozzy Osbourne 6 Pearl Jam 5 Faith No More 4 Foo Fighters 4 Lost 4
Omgaan met NULL-waarden
Zoals vermeld, als er geen niet-NULL-waarden in de groep zijn (d.w.z. alle waarden zijn NULL), dan max()
geeft NULL terug.
SELECT
max(123),
max(NULL);
Resultaat:
max(123) max(NULL) ---------- ---------- 123
Max() gebruiken op strings
Zoals vermeld, max()
geeft de waarde terug die als laatste zou worden geretourneerd met de ORDER BY
clausule (ervan uitgaande dat het de standaard oplopende volgorde gebruikt).
Ditzelfde concept is van toepassing op snaren.
SELECT max(ProductName) FROM Products;
Resultaat:
Widget Opener
Het retourneert dus niet de tekenreeks met het maximale aantal tekens of iets dergelijks.
We kunnen dit resultaat verifiëren met een zoekopdracht met de ORDER BY
clausule.
SELECT * FROM Products
ORDER BY ProductName;
Resultaat:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 4 Foobar Set 120.0 5 Red Widget 2 Widget Holder 139.5 3 Widget Opener 89.27