sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Max()

El max() de SQLite La función devuelve el valor máximo de todos los valores de un grupo.

El valor máximo es el valor que aparecería en último lugar en una consulta que utiliza un ORDER BY cláusula en la misma columna.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SELECT max(Price) FROM Products;

Resultado:

389.45

Aquí hay una consulta que devuelve todas las filas de esa tabla.

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 la primera fila tiene un valor NULL para el precio. El max() la función ignora eso, porque las otras filas tienen valores no NULL. Si todas las filas fueran NULL, entonces max() devolvería NULL.

Usé el ORDER BY cláusula en este ejemplo. Como se mencionó, el max() La función devuelve el último valor que aparece al usar esta cláusula (suponiendo que ordena la columna en orden ascendente, que es el valor predeterminado).

Para que quede claro, podría haber usado lo siguiente para obtener el mismo resultado:

SELECT * FROM Products 
ORDER BY Price ASC;

Combina Max() con Count()

Aquí hay un ejemplo que combina el max() función con el count() función para devolver el recuento máximo.

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

Resultado:

21       

Podemos verificar esto ejecutando otra consulta con un 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                

Tratar con valores NULL

Como se mencionó, si no hay valores que no sean NULL en el grupo (es decir, todos los valores son NULL), entonces max() devuelve NULL.

SELECT 
  max(123),
  max(NULL);

Resultado:

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

Uso de Max() en cadenas

Como se mencionó, max() devuelve el valor que se devolvería en último lugar utilizando ORDER BY cláusula (asumiendo que está usando el orden ascendente predeterminado).

Este mismo concepto se aplica a las cadenas.

SELECT max(ProductName) FROM Products;

Resultado:

Widget Opener

Por lo tanto, no devuelve la cadena con la cantidad máxima de caracteres ni nada por el estilo.

Podemos verificar este resultado con una consulta usando el 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