Le SQLite max()
La fonction renvoie la valeur maximale de toutes les valeurs d'un groupe.
La valeur maximale est la valeur qui apparaîtrait en dernier dans une requête utilisant un ORDER BY
clause sur la même colonne.
Exemple
Voici un exemple pour illustrer.
SELECT max(Price) FROM Products;
Résultat :
389.45
Voici une requête qui renvoie toutes les lignes de cette table.
SELECT * FROM Products
ORDER BY Price;
Résultat :
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
Notez que la première ligne a une valeur NULL pour le prix. Le max()
La fonction ignore cela, car les autres lignes ont des valeurs non NULL. Si toutes les lignes étaient NULL, alors max()
retournerait NULL.
J'ai utilisé le ORDER BY
clause dans cet exemple. Comme mentionné, le max()
La fonction renvoie la valeur qui apparaît en dernier lors de l'utilisation de cette clause (en supposant que vous ordonniez la colonne par ordre croissant, ce qui est la valeur par défaut).
Juste pour être clair, j'aurais pu utiliser ce qui suit pour le même résultat :
SELECT * FROM Products
ORDER BY Price ASC;
Combiner Max() avec Count()
Voici un exemple qui combine le max()
fonction avec le count()
fonction pour renvoyer le nombre maximum.
SELECT max(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Résultat :
21
Nous pouvons le vérifier en exécutant une autre requête avec un ORDER BY
clause.
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;
Résultat :
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
Traitement des valeurs NULL
Comme mentionné, s'il n'y a pas de valeurs non NULL dans le groupe (c'est-à-dire que toutes les valeurs sont NULL), alors max()
renvoie NULL.
SELECT
max(123),
max(NULL);
Résultat :
max(123) max(NULL) ---------- ---------- 123
Utiliser Max() sur les chaînes
Comme mentionné, max()
renvoie la valeur qui serait renvoyée en dernier en utilisant le ORDER BY
clause (en supposant qu'elle utilise l'ordre croissant par défaut).
Ce même concept s'applique aux chaînes.
SELECT max(ProductName) FROM Products;
Résultat :
Widget Opener
Donc, il ne renvoie pas la chaîne avec le nombre maximum de caractères ou quelque chose comme ça.
Nous pouvons vérifier ce résultat avec une requête utilisant le ORDER BY
clause.
SELECT * FROM Products
ORDER BY ProductName;
Résultat :
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