Das SQLite max()
Die Funktion gibt den Maximalwert aus allen Werten in einer Gruppe zurück.
Der Höchstwert ist der Wert, der zuletzt in einer Abfrage erscheinen würde, die einen ORDER BY
verwendet Klausel in derselben Spalte.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT max(Price) FROM Products;
Ergebnis:
389.45
Hier ist eine Abfrage, die alle Zeilen in dieser Tabelle zurückgibt.
SELECT * FROM Products
ORDER BY Price;
Ergebnis:
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
Beachten Sie, dass die erste Zeile einen NULL-Wert für den Preis enthält. Der max()
Die Funktion ignoriert dies, da die anderen Zeilen Nicht-NULL-Werte haben. Wenn alle Zeilen NULL waren, dann max()
würde NULL zurückgeben.
Ich habe den ORDER BY
verwendet Klausel in diesem Beispiel. Wie bereits erwähnt, die max()
Die Funktion gibt den Wert zurück, der bei Verwendung dieser Klausel zuletzt erscheint (vorausgesetzt, Sie sortieren die Spalte in aufsteigender Reihenfolge, was der Standardwert ist).
Nur um das klarzustellen, ich hätte Folgendes für dasselbe Ergebnis verwenden können:
SELECT * FROM Products
ORDER BY Price ASC;
Kombiniere Max() mit Count()
Hier ist ein Beispiel, das max()
kombiniert Funktion mit dem count()
Funktion, um die maximale Anzahl zurückzugeben.
SELECT max(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Ergebnis:
21
Wir können dies überprüfen, indem wir eine weitere Abfrage mit einem ORDER BY
ausführen Klausel.
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;
Ergebnis:
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
Umgang mit NULL-Werten
Wie bereits erwähnt, wenn es keine Nicht-NULL-Werte in der Gruppe gibt (d. h. alle Werte sind NULL), dann max()
gibt NULL zurück.
SELECT
max(123),
max(NULL);
Ergebnis:
max(123) max(NULL) ---------- ---------- 123
Max() für Strings verwenden
Wie bereits erwähnt, max()
gibt den Wert zurück, der zuletzt mit ORDER BY
zurückgegeben würde -Klausel (vorausgesetzt, es wird die standardmäßige aufsteigende Reihenfolge verwendet).
Dasselbe Konzept gilt für Strings.
SELECT max(ProductName) FROM Products;
Ergebnis:
Widget Opener
Es gibt also nicht die Zeichenfolge mit der maximalen Anzahl von Zeichen oder ähnlichem zurück.
Wir können dieses Ergebnis mit einer Abfrage mit dem ORDER BY
überprüfen Klausel.
SELECT * FROM Products
ORDER BY ProductName;
Ergebnis:
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