sql >> Databasteknik >  >> RDS >> SQLite

Hur SQLite Max() fungerar

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     

  1. 8 WP-CLI-kommandon för att rensa upp och optimera din webbplats

  2. Ansluter AnySQL Maestro till Salesforce.com

  3. SQL-fråga för att översätta en lista med nummer som matchas mot flera intervall, till en lista med värden

  4. Hur man formaterar siffror i PostgreSQL