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

Como o SQLite Min() funciona


O SQLite min() A função retorna o valor mínimo não NULL de todos os valores em um grupo.

O valor mínimo é o valor que apareceria primeiro em uma consulta que usa um ORDER BY cláusula na mesma coluna.

Exemplo


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

Resultado:
89.27

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 min() A função ignora isso e usa o valor mínimo não NULL.

Combine Min() com Count()


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

Resultado:
1       

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 ASC
LIMIT 3;

Resultado:
Name                            AlbumCount
------------------------------  ----------
Aaron Copland & London Symphon  1         
Aaron Goldberg                  1         
Academy of St. Martin in the F  1         

Combinar com Max() e Avg()


Aqui está outro exemplo onde eu adiciono o max() e avg() funções à mistura.
SELECT 
  min(AlbumCount),
  max(AlbumCount),
  avg(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);

Resultado:
min(AlbumCount)  max(AlbumCount)  avg(AlbumCount) 
---------------  ---------------  ----------------
1                21               1.70098039215686

Usando Min() em Strings


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

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

Resultado:
Blue Widgets (6 Pack)

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