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

Come funziona SQLite Max()

Il max() di SQLite La funzione restituisce il valore massimo da tutti i valori in un gruppo.

Il valore massimo è l'ultimo valore che apparirà in una query che utilizza un ORDER BY clausola sulla stessa colonna.

Esempio

Ecco un esempio da dimostrare.

SELECT max(Price) FROM Products;

Risultato:

389.45

Ecco una query che restituisce tutte le righe in quella tabella.

SELECT * FROM Products 
ORDER BY Price;

Risultato:

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    

Si noti che la prima riga ha un valore NULL per il prezzo. Il max() la funzione lo ignora, perché le altre righe hanno valori non NULL. Se tutte le righe erano NULL, allora max() restituirebbe NULL.

Ho usato il ORDER BY clausola in questo esempio. Come accennato, il max() La funzione restituisce il valore che appare per ultimo quando si utilizza questa clausola (supponendo che si ordini la colonna in ordine crescente, che è l'impostazione predefinita).

Per essere chiari, avrei potuto usare quanto segue per lo stesso risultato:

SELECT * FROM Products 
ORDER BY Price ASC;

Combina Max() con Count()

Ecco un esempio che combina max() funzione con il count() funzione per restituire il conteggio massimo.

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

Risultato:

21       

Possiamo verificarlo eseguendo un'altra query con un ORDER BY clausola.

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;

Risultato:

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                

Gestire valori NULL

Come accennato, se non ci sono valori non NULL nel gruppo (cioè tutti i valori sono NULL), allora max() restituisce NULL.

SELECT 
  max(123),
  max(NULL);

Risultato:

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

Utilizzo di Max() sulle stringhe

Come accennato, max() restituisce il valore che verrebbe restituito per ultimo utilizzando ORDER BY clausola (supponendo che utilizzi l'ordine crescente predefinito).

Questo stesso concetto si applica alle stringhe.

SELECT max(ProductName) FROM Products;

Risultato:

Widget Opener

Quindi non restituisce la stringa con la quantità massima di caratteri o qualcosa del genere.

Possiamo verificare questo risultato con una query utilizzando il ORDER BY clausola.

SELECT * FROM Products 
ORDER BY ProductName;

Risultato:

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