sql >> Database >  >> RDS >> SQLite

Hoe SQLite Max() werkt

De SQLite max() functie retourneert de maximale waarde van alle waarden in een groep.

De maximale waarde is de waarde die als laatste zou verschijnen in een zoekopdracht die gebruikmaakt van een ORDER BY clausule in dezelfde kolom.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

SELECT max(Price) FROM Products;

Resultaat:

389.45

Hier is een zoekopdracht die alle rijen in die tabel retourneert.

SELECT * FROM Products 
ORDER BY Price;

Resultaat:

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    

Merk op dat de eerste rij een NULL-waarde heeft voor de prijs. De max() functie negeert dat, omdat de andere rijen niet-NULL-waarden hebben. Als alle rijen NULL waren, dan max() zou NULL teruggeven.

Ik gebruikte de ORDER BY clausule in dit voorbeeld. Zoals gezegd, de max() functie retourneert de waarde die als laatste verschijnt bij gebruik van deze clausule (ervan uitgaande dat u de kolom in oplopende volgorde ordent, wat de standaard is).

Voor de duidelijkheid, ik had het volgende kunnen gebruiken voor hetzelfde resultaat:

SELECT * FROM Products 
ORDER BY Price ASC;

Combineer Max() met Aantal()

Hier is een voorbeeld dat de max() . combineert functie met de count() functie om het maximale aantal terug te geven.

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

Resultaat:

21       

We kunnen dit verifiëren door een andere zoekopdracht uit te voeren met een ORDER BY clausule.

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;

Resultaat:

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                

Omgaan met NULL-waarden

Zoals vermeld, als er geen niet-NULL-waarden in de groep zijn (d.w.z. alle waarden zijn NULL), dan max() geeft NULL terug.

SELECT 
  max(123),
  max(NULL);

Resultaat:

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

Max() gebruiken op strings

Zoals vermeld, max() geeft de waarde terug die als laatste zou worden geretourneerd met de ORDER BY clausule (ervan uitgaande dat het de standaard oplopende volgorde gebruikt).

Ditzelfde concept is van toepassing op snaren.

SELECT max(ProductName) FROM Products;

Resultaat:

Widget Opener

Het retourneert dus niet de tekenreeks met het maximale aantal tekens of iets dergelijks.

We kunnen dit resultaat verifiëren met een zoekopdracht met de ORDER BY clausule.

SELECT * FROM Products 
ORDER BY ProductName;

Resultaat:

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. Wat is de standaardnaam van de beperking in PostgreSQL?

  2. Huidige verbindingen in MySQL Workbench bekijken met behulp van de GUI

  3. Best practices voor het ontwerpen van meertalige databases

  4. Buffercache:wat is het en hoe beïnvloedt het de databaseprestaties?