SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne SQLite Max()

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