sql >> Database teknologi >  >> RDS >> SQLite

Sådan fungerer SQLite Max()

SQLite max() funktion returnerer den maksimale værdi fra alle værdier i en gruppe.

Den maksimale værdi er den værdi, der vises sidst i en forespørgsel, der bruger en ORDER BY klausul i samme kolonne.

Eksempel

Her er et eksempel til at demonstrere.

SELECT max(Price) FROM Products;

Resultat:

389.45

Her er en forespørgsel, der returnerer alle rækker i den tabel.

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    

Bemærk, at den første række har en NULL-værdi for prisen. max() funktion ignorerer det, fordi de andre rækker har ikke-NULL værdier. Hvis alle rækker var NULL, så max() ville returnere NULL.

Jeg brugte ORDER BY klausul i dette eksempel. Som nævnt er max() funktion returnerer den værdi, der vises sidst, når du bruger denne klausul (forudsat at du bestiller kolonnen i stigende rækkefølge, som er standard).

Bare for at være klar, kunne jeg have brugt følgende til det samme resultat:

SELECT * FROM Products 
ORDER BY Price ASC;

Kombiner Max() med Count()

Her er et eksempel, der kombinerer max() funktion med count() funktion for at returnere det maksimale antal.

SELECT max(AlbumCount) 
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);

Resultat:

21       

Vi kan bekræfte dette ved at køre en anden forespørgsel 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                

Håndtering af NULL-værdier

Som nævnt, hvis der ikke er nogen ikke-NULL-værdier i gruppen (dvs. alle værdier er NULL), så max() returnerer NULL.

SELECT 
  max(123),
  max(NULL);

Resultat:

max(123)    max(NULL) 
----------  ----------
123                   

Brug af Max() på strenge

Som nævnt, max() returnerer den værdi, der sidst ville blive returneret ved hjælp af ORDER BY klausul (forudsat at den bruger standard stigende rækkefølge).

Det samme koncept gælder for strenge.

SELECT max(ProductName) FROM Products;

Resultat:

Widget Opener

Så det returnerer ikke strengen med det maksimale antal tegn eller noget lignende.

Vi kan bekræfte dette resultat med en forespørgsel ved hjælp af 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. Brug af Microsoft Access med Power BI

  2. SQL Server SELECT, hvor enhver kolonne indeholder 'x'

  3. Objektet i klassen DateTime kunne ikke konverteres til streng

  4. SQL Oracle-optællingsklynger