SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como o SQLite Max() funciona


O SQLite max() A função retorna o valor máximo de todos os valores em um grupo.

O valor máximo é o valor que apareceria por último em uma consulta que usa um ORDER BY cláusula na mesma coluna.

Exemplo


Aqui está um exemplo para demonstrar.
SELECT max(Price) FROM Products;

Resultado:
389.45

Aqui está uma consulta que retorna todas as linhas dessa tabela.
SELECT * FROM Products 
ORDER BY Price;

Resultado:
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    

Observe que a primeira linha tem um valor NULL para o preço. O max() A função ignora isso, porque as outras linhas têm valores não NULL. Se todas as linhas forem NULL, então max() retornaria NULL.

Eu usei o ORDER BY cláusula neste exemplo. Como mencionado, o max() A função retorna o valor que aparece por último ao usar esta cláusula (supondo que você ordene a coluna em ordem crescente, que é o padrão).

Só para ficar claro, eu poderia ter usado o seguinte para o mesmo resultado:
SELECT * FROM Products 
ORDER BY Price ASC;

Combine Max() com Count()


Aqui está um exemplo que combina o max() função com o count() função para retornar a contagem máxima.
SELECT max(AlbumCount) 
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);

Resultado:
21       

Podemos verificar isso executando outra consulta com um ORDER BY cláusula.
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;

Resultado:
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                

Lidando com valores NULL


Como mencionado, se não houver valores não NULL no grupo (ou seja, todos os valores são NULL), então max() retorna NULO.
SELECT 
  max(123),
  max(NULL);

Resultado:
max(123)    max(NULL) 
----------  ----------
123                   

Usando Max() em Strings


Como mencionado, max() retorna o valor que seria retornado por último usando o ORDER BY cláusula (assumindo que está usando a ordem crescente padrão).

Este mesmo conceito se aplica a strings.
SELECT max(ProductName) FROM Products;

Resultado:
Widget Opener

Portanto, não retorna a string com a quantidade máxima de caracteres ou algo assim.

Podemos verificar esse resultado com uma consulta usando o ORDER BY cláusula.
SELECT * FROM Products 
ORDER BY ProductName;

Resultado:
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