SQLite max()
funktion returnerar det maximala värdet från alla värden i en grupp.
Det maximala värdet är det värde som skulle visas sist i en fråga som använder en ORDER BY
klausul i samma kolumn.
Exempel
Här är ett exempel att visa.
SELECT max(Price) FROM Products;
Resultat:
389.45
Här är en fråga som returnerar alla rader i den tabellen.
SELECT * FROM Products
ORDER BY Price;
Resultat:
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
Observera att den första raden har ett NULL-värde för priset. max()
funktion ignorerar det, eftersom de andra raderna har icke-NULL-värden. Om alla rader var NULL, då max()
skulle returnera NULL.
Jag använde ORDER BY
klausul i detta exempel. Som nämnts, max()
funktion returnerar värdet som visas sist när du använder denna sats (förutsatt att du ordnar kolumnen i stigande ordning, vilket är standard).
Bara för att vara tydlig, jag kunde ha använt följande för samma resultat:
SELECT * FROM Products
ORDER BY Price ASC;
Kombinera Max() med Count()
Här är ett exempel som kombinerar max()
funktion med count()
funktion för att returnera det maximala antalet.
SELECT max(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Resultat:
21
Vi kan verifiera detta genom att köra en annan fråga med en ORDER BY
klausul.
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;
Resultat:
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
Hantera NULL-värden
Som nämnts, om det inte finns några icke-NULL-värden i gruppen (dvs. alla värden är NULL), då max()
returnerar NULL.
SELECT
max(123),
max(NULL);
Resultat:
max(123) max(NULL) ---------- ---------- 123
Använda Max() på strängar
Som nämnts, max()
returnerar värdet som skulle returneras senast med ORDER BY
klausul (förutsatt att den använder standard stigande ordning).
Samma koncept gäller för strängar.
SELECT max(ProductName) FROM Products;
Resultat:
Widget Opener
Så det returnerar inte strängen med maximalt antal tecken eller något liknande.
Vi kan verifiera detta resultat med en fråga med ORDER BY
klausul.
SELECT * FROM Products
ORDER BY ProductName;
Resultat:
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