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