Le SQLite min()
La fonction renvoie la valeur minimale non NULL de toutes les valeurs d'un groupe.
La valeur minimale est la valeur qui apparaîtrait en premier dans une requête utilisant un ORDER BY
clause sur la même colonne.
Exemple
Voici un exemple pour illustrer.
SELECT min(Price) FROM Products;
Résultat :
89.27
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 min()
La fonction ignore cela et utilise la valeur minimale non NULL.
Combiner Min() avec Count()
Voici un exemple qui combine le min()
fonction avec le count()
fonction pour renvoyer le nombre minimum.
SELECT min(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Résultat :
1
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 ASC
LIMIT 3;
Résultat :
Name AlbumCount ------------------------------ ---------- Aaron Copland & London Symphon 1 Aaron Goldberg 1 Academy of St. Martin in the F 1
Combiner avec Max() et Avg()
Voici un autre exemple où j'ajoute le max()
et avg()
fonctions au mélange.
SELECT
min(AlbumCount),
max(AlbumCount),
avg(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Résultat :
min(AlbumCount) max(AlbumCount) avg(AlbumCount) --------------- --------------- ---------------- 1 21 1.70098039215686
Utiliser Min() sur les chaînes
Comme mentionné, min()
renvoie la valeur qui serait renvoyée en premier 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 min(ProductName) FROM Products;
Résultat :
Blue Widgets (6 Pack)
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