20th Jul 2022 Lectura de 9 minutos Explicación de las funciones MIN y MAX de SQL en 6 ejemplos Dorota Wdzięczna SQL aprender SQL min max Índice ¿Qué es la función MIN() en SQL? ¿Qué es la función MAX() en SQL? Los datos de la muestra Ejemplos de casos de uso de MIN() y MAX() 1. Uso de MIN() o MAX() como columna única 2. Uso de MIN() y MAX() con otras columnas 3. Uso de MIN() y MAX() en la misma consulta 4. Uso de MIN() o MAX() en la cláusula HAVING 5. Uso de MIN() o MAX() en una función de ventana simple 6. Uso de MIN/MAX en una función de ventana dividida Lo que hemos aprendido sobre las funciones MIN() y MAX() de SQL ¿Qué son las funciones SQL MIN() y MAX()? ¿Cuándo se deben usar como funciones agregadas y cuándo se deben usar con funciones de ventana? Lo explicamos con ejemplos prácticos. Es difícil imaginar SQL sin las funciones de agregación MIN() y MAX(). Son muy útiles entre muchos profesionales de los datos porque nos permiten resolver muchos problemas empresariales. En este artículo, explicaré lo que hace cada función y discutiré varios casos de uso. Comencemos. ¿Qué es la función MIN() en SQL? El estándar SQL es soportado por la mayoría de los motores de bases de datos relacionales e incluye varias funciones de agregación. Estas funciones de agregación realizan cálculos sobre datos numéricos. Una Guía para principiantes de las funciones agregadas de SQL las discute todas en detalle; este artículo se centra en sólo dos de estas funciones: MIN() y MAX(). En primer lugar, hablemos de la función MIN(). Devuelve el valor más pequeño de un conjunto de valores. Los valores pueden proceder de una columna numérica o ser el resultado de una expresión que devuelva un valor numérico. (Nota: La columna puede provenir de una tabla o de una vista.) Es una función escalar que devuelve un valor numérico. La sintaxis de la función MIN() se presenta a continuación: MIN(column_or_expression) Como ve, esta función toma un argumento - una columna o una expresión con valores numéricos. Es importante que los valores sean numéricos, porque la función encuentra el valor mínimo entre ellos. Por ejemplo, de este conjunto de valores ... 4, 5, 8, 2, 14 ... MIN() devuelve 2. ¿Qué es la función MAX() en SQL? Al igual que MIN(), MAX() es una función agregada que devuelve un valor numérico de un conjunto. La diferencia es que devuelve el mayor valor (máximo). Los valores pueden provenir de una columna o como resultado de una expresión que devuelva un valor o valores numéricos. Es una función escalar que devuelve un valor. Esta es la sintaxis de la función MAX(): MAX(column_or_expression) De este conjunto de valores ... 4, 5, 8, 2, 14 ... MAX() devuelve 14. Los datos de la muestra Antes de comenzar a analizar los casos de uso de MIN() y MAX(), veamos los datos que utilizaremos en la tabla cosmetics: idnamecategorydelivered_yearprice 1shampoohair202011 2night creamface202012 3cleanserface20205 4brushhair20203 5mascaraeye20218 6eyebroweye202115 7conditionerhair202121 8sprayhair202113 9eyelinereye202120 10tonicface202021 11face maskface202110 12eye creameye202122 13hair maskhair20203 Esta tabla almacena información sobre productos cosméticos en tres categorías (la columna category): pelo, cara y ojos. Los nombres de los productos están en la columna nombre. Las dos últimas columnas presentan datos sobre cuándo se entregó el producto (delivered_year) y su price. Sólo hay dos años (2020 y 2021) en la columna delivered_year. Si necesita ayuda con las sentencias y funciones SQL que utilizamos en este artículo, pruebe la hoja de trucos deSQL para principiantes . Ejemplos de casos de uso de MIN() y MAX() 1. Uso de MIN() o MAX() como columna única Las funciones agregadas como MIN() pueden utilizarse como una sola columna en la consulta SELECT. Por ejemplo: SELECT MIN(price) FROM cosmetics; Este es el resultado: min 3 Después de la palabra clave SELECT, ponemos MIN() y el nombre de la columna (en este caso, price). A continuación, la palabra clave FROM y el nombre de la tabla (cosmetics). El resultado es el valor más pequeño de la columna price, que es 3. Puede utilizar MAX() exactamente de la misma manera para encontrar el precio más alto del producto: SELECT MAX(price) FROM cosmetics; Y aquí está el resultado: max 22 El precio máximo de la tabla cosmetics es 22 (el precio de la crema de ojos). El artículo Cómo encontrar los valores mínimos en las columnas le ofrece más ejemplos sobre cómo encontrar el valor mínimo. 2. Uso de MIN() y MAX() con otras columnas Un uso más avanzado de las funciones MIN() o MAX() es utilizarlas en grupos de filas. A continuación se muestra otra consulta: SELECT category, MAX(price) AS max_price FROM cosmetics GROUP BY category; Devuelve los datos: categorymax_price hair21 face21 eye22 Primero está la palabra clave SELECT con el nombre de la columna (category), luego la función MAX() con la columna price como argumento. Luego tenemos max_price, el alias de la nueva columna creada por MAX(). A continuación tenemos la palabra clave FROM y el nombre de la tabla. Al final, tenemos la cláusula GROUP BY con la columna category. Esto determina los grupos (es decir, los productos se agrupan por categoría). Para cada grupo, obtenemos su mayor valor, en este caso, el precio más alto entre los productos de esa categoría. En la categoría "ojos", el precio más alto es de 22 dólares; en las categorías "cara" y "pelo", es de 21 dólares. El artículo Cómo encontrar los valores máximos en las filas te da más ejemplos de esta función. 3. Uso de MIN() y MAX() en la misma consulta Puede utilizar las funciones MIN y MAX en una misma consulta SELECT. Si sólo utiliza estas funciones sin ninguna columna, no necesita una cláusula GROUP BY. A continuación tenemos una consulta que implementa ambas funciones: SELECT MIN(price) AS min_price, MAX(price) AS max_price FROM cosmetics; Esta consulta devuelve los datos: min_pricemax_price 322 En el SELECT, tenemos la función MIN() con el argumento de la columna price seguida de MAX() con el mismo argumento y sus respectivos alias. Esto devuelve el precio mínimo ($3) y el precio máximo ($22) de todos los productos de la tabla. Por supuesto, puede hacer lo mismo calculando el precio mínimo y máximo de cada categoría. Sin embargo, aquí tendrá que utilizar el método GROUP BY: SELECT category, MIN(price) AS min_price, MAX(price) AS max_price FROM cosmetics GROUP BY category; Este es el conjunto de resultados: categorymin_pricemax_price hair321 face521 eye822 En este caso, el precio mínimo en la categoría "pelo" es de 3$ y el máximo de 21$, mientras que en la categoría "ojos" el valor más bajo es de 8$ y el más alto de 22$. Puedes aprender más sobre cómo encontrar valores mínimos y máximos en los artículos Cómo encontrar el valor mínimo de una columna en SQL y Cómo encontrar el valor máximo de una columna numérica en SQL. 4. Uso de MIN() o MAX() en la cláusula HAVING Otra forma de utilizar MIN() o MAX() es filtrando las filas según el valor devuelto por esta función, es decir, en la cláusula HAVING. La siguiente consulta implementa MIN() en HAVING: SELECT category, MAX(price) AS max_price FROM cosmetics GROUP BY category HAVING MIN(price)>4; El conjunto de resultados: categorymax_price face21 eye22 En el SELECT, tenemos la columna category. A continuación, la función MAX() con price como argumento. Para cada categoría, calcularemos el precio máximo entre los productos que pertenecen a esa categoría. Después FROM cosmetics viene la cláusula GROUP BY con la columna category. Al final de la consulta se encuentra la cláusula HAVING con la función MIN(). De este modo, se encontrará el precio más bajo entre los productos de cada categoría; si ese precio es inferior a 4, no se incluirá en los resultados. Como el precio mínimo en la categoría "pelo" es de 3 dólares, no se ha mostrado en el conjunto de resultados. Observe que el uso de cualquiera de las dos funciones en HAVING no requiere su uso (ni el de ninguna función agregada) en SELECT. 5. Uso de MIN() o MAX() en una función de ventana simple El uso más avanzado de MIN() o MAX() es en una función ventana. Si no está familiarizado con las funciones ventana, lea el artículo Ejemplos de funciones ventana SQL con explicaciones. Aquí hay una función de ventana simple que usa la función MIN(): SELECT name, price, category, delivered_year, MIN(price) OVER (ORDER BY category DESC) AS min_price FROM cosmetics; Lo primero que puede notar es la lista de columnas SELECT: name, price, category, delivered_year. Lo siguiente es la función agregada MIN(price), que encuentra el valor más bajo en la columna price. OVER es lo que hace que esta sea una función ventana; define la ventana. o el conjunto de filas dentro del conjunto de resultados de la consulta. Esto nos permite calcular un valor agregado para cada fila de la ventana. Aquí, OVER está emparejado con ORDER BY categoría DESC (es decir, en orden descendente); por lo tanto, el precio mínimo es siempre de 3 dólares, porque el precio más bajo en la categoría "pelo" es de 3 dólares, que es más bajo que el mínimo de la categoría siguiente de 5 dólares. Este es el resultado: namepricecategorydelivered_yearmin_price hair mask3hair20203 brush3hair20203 conditioner21hair20213 spray13hair20213 shampoo11hair20203 night cream12face20203 cleanser5face20203 tonic21face20203 face mask10face20213 mascara8eye20213 eye cream22eye20213 eyeliner20eye20213 eyebrow15eye20213 6. Uso de MIN/MAX en una función de ventana dividida A continuación, usemos MIN() o MAX() en una función de ventana que tenga la cláusula PARTITION BY. (Si necesita un repaso de PARTITION BY, eche un vistazo a la hoja de trucos de SQL Funciones de ventana .) Esta es la consulta: SELECT name, price, category, delivered_year, MIN(price) OVER (PARTITION BY delivered_year ORDER BY category DESC) AS min_price FROM cosmetics; Esta consulta calcula el precio mínimo de cada partición basándose en la columna delivered_year y ordena las filas por la categoría. Devuelve el siguiente conjunto de resultados: namepricecategorydelivered_yearmin_price shampoo11hair20203 brush3hair20203 hair mask3hair20203 tonic21face20203 night cream12face20203 cleanser5face20203 spray13hair202113 conditioner21hair202113 face mask10face202110 eyeliner20eye20218 mascara8eye20218 eyebrow15eye20218 eye cream22eye20218 Estos resultados contienen la lista de cosméticos, incluyendo su nombre, precio, categoría y el año de entrega. Cada fila contiene también el precio mínimo para ese año de entrega (que es la partición). En cada partición, las filas se ordenan de forma descendente por categoría. En este caso, la cláusula OVER contiene las cláusulas ORDER BY y PARTITION BY. PARTITION BY delivered_year indica que el precio mínimo se calcula por separado para cada año. Los registros de cada partición (el año en que se entregaron los productos) se ordenan según la categoría en orden descendente (ORDER BY categoría DESC). Lo que hemos aprendido sobre las funciones MIN() y MAX() de SQL Las funciones agregadas de SQL MIN() y MAX() son muy populares. En este artículo, he explicado cómo utilizarlas en varios casos. La principal diferencia entre ellas es que MIN() encuentra el valor mínimo en un conjunto de valores, mientras que MAX() devuelve el valor máximo. Ahora que sabes cómo usar MIN() y MAX(), estás listo para Encontrar los valores mayores/menores entre todas las filas dadas o grupos de filas dadas. Comparar los valores mínimos y máximos con otras filas. Utilizar estas funciones en particiones y en funciones de ventana simples. Para más información sobre las diferencias entre los valores agregados y las funciones ventana, pruebe nuestro artículo SQL Funciones de ventana vs. Funciones Agregadas SQL: Similitudes y diferencias. Si eres un principiante y quieres ampliar tus conocimientos de SQL, te recomiendo el curso de LearnSQL.es SQL para principiantes de la empresa. Pero si ya estás familiarizado con el SQL básico, tal vez quieras tomar nuestro Funciones de ventana curso para mejorar tus conocimientos. Tags: SQL aprender SQL min max