Volver a la lista de artículos Artículos
Lectura de 6 minutos

La Función SQL MIN()

SQL dispone de una gran variedad de potentes herramientas de agregación, incluida la función MIN() de SQL. Este artículo es una guía de referencia rápida para extraer y utilizar valores mínimos en sus consultas.

En el competitivo entorno empresarial actual, es vital poder analizar los datos de su organización de forma eficaz para tomar decisiones informadas. Las funciones de agregación de SQL permiten realizar todo tipo de análisis estadísticos de los datos.

Este artículo es una guía de referencia sobre la función SQL MIN(), que extrae el elemento más pequeño de una columna de datos.

Si eres nuevo en SQL, puede que te interese nuestro curso interactivo SQL para principiantes. Empezando por el nivel principiante, llegará a dominar las funciones más útiles de SQL. Aprenderá los conceptos de las bases de datos relacionales, cómo extraer datos y cómo analizarlos utilizando agrupaciones y agregados.

Se conectará a una base de datos a través de su navegador para practicar sus nuevos conocimientos con 129 ejercicios interactivos. El curso dura unas 10 horas.

Ahora, volvamos a la función MIN(). Empezaremos por ver el conjunto de datos.

Datos de muestra

Todos los ejemplos de este artículo utilizan los datos que se muestran a continuación, que son un subconjunto de la base de datos de empleados de ejemplo de MySQL. Los datos se guardan en una tabla llamada employee_data.

emp_nobirth_datefirst_namelast_namesalarydept_nameterm_date
100021984-06-02BezalelSimmel72527Sales2022-05-31
100041974-05-01ChirstianKoblick74057Production
100061973-04-20AnnekePreusig60098Development
100081978-02-19SaniyaKalloufi52668Development
100121980-10-04PatricioBridgland54794Development
100141976-02-12BerniGenin60598Development
100161981-05-02KazuhitoCappelletti77935Sales2020-12-31

Ejemplos Simples de la Función SQL MIN()

Ejemplo 1: Función MIN() simple

La función MIN() extrae el valor mínimo de una columna. En su forma más simple, podría utilizar la consulta siguiente para responder a la pregunta: ¿Cuánto gana anualmente el empleado peor pagado?

SELECT 
  MIN(salary) 
FROM employee_data;

Los resultados son los siguientes:

min(salary)
52668

Tenga en cuenta que la función MIN(), como todos los demás agregados de SQL, siempre va seguida del nombre de una columna entre paréntesis. En este ejemplo, SQL busca en toda la tabla y extrae el valor más bajo de la columna nombrada.

Ejemplo 2: Uso de MIN() con otras funciones agregadas

Por supuesto, puede incluir otras funciones de agregación en sus resultados, como en este ejemplo:

SELECT 
  MIN(salary), 
  MAX(salary), 
  AVG(salary) 
FROM employee_data;

Los resultados tendrían este aspecto:

min(salary)max(salary)avg(salary)
526687793564668.143

Para ver más ejemplos, lea Explicación de las funciones SQL MIN() y MAX() en 6 ejemplos.

Ejemplo 3: Uso de MIN() con una expresión aritmética

También puede utilizar expresiones aritméticas con la función MIN(). Si desea ver el salario mínimo mensual en lugar del salario mínimo anual, su consulta sería:

SELECT MIN(salary/12) AS min_monthly_salary
FROM employee_data;

El resultado de esta consulta es:

min_monthly_salary
4389

Ejemplos no estándar de la función MIN()

Ejemplo 4: Uso de MIN() en columnas de fecha/hora

La función MIN() funciona igualmente bien con datos no numéricos.

Puede utilizarse con tipos de datos de fecha y hora para extraer la fecha u hora más temprana. Si desea encontrar la fecha de nacimiento del empleado más joven de la empresa, la consulta sería la siguiente:

SELECT MIN(birth_date) 
FROM employee_data;

Esto da los siguientes resultados:

min(birth_date)
20/4/1973

Ejemplo 5: Uso de la función SQL MIN() en columnas de texto

Para tipos de datos de cadena de caracteres como CHAR, VARCHAR y TEXT, la función SQL MIN() extrae el primer valor en orden alfabético de la columna.

Si desea encontrar el primer nombre de departamento por orden alfabético en la tabla employee_data tabla, la consulta sería:

SELECT MIN(dept_name) 
FROM employee_data

Estos son los resultados:

min(dept_name)
Development

Observará que aunque varios empleados pertenecen al departamento de Desarrollo, el nombre del departamento sólo aparece una vez en los resultados.

Uso de la función SQL MIN() con GROUP BY

La función MIN(), como todas las funciones agregadas de SQL, puede utilizarse junto con la cláusula GROUP BY. Esta cláusula le indica a SQL que agrupe filas similares y genere una única fila para cada grupo. Por ejemplo, si agrupa los datos de muestra por departamento, el conjunto de resultados contendrá una fila por cada departamento.

Si aún no está familiarizado con la cláusula GROUP BY y cómo utilizarla, estos 5 Ejemplos de GROUP BY pueden ayudarle.

Cuando se utiliza la función MIN() junto con la cláusula GROUP BY, se ve el valor mínimo de cada grupo. Por ejemplo, si quisieras ver el salario más bajo de cada departamento, tu consulta se vería así:

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name;

Los resultados de la consulta serían los siguientes:

dept_nameMIN(salary)
Sales72527
Production74057
Development52668

También puede utilizar la cláusula ORDER BY. Si desea que los resultados aparezcan por orden de salario mínimo, la consulta sería:

SELECT 
  dept_name, 
  MIN(salary) 
FROM employee_data 
GROUP BY dept_name
ORDER BY MIN(salary);

El conjunto de resultados aparecerá en orden de salario mínimo, de menor a mayor:

dept_nameMIN(salary)
Development52668
Sales72527
Production74057

Si crees que necesitas algo de práctica con la agrupación de datos en SQL, encontrarás algunos ejercicios útiles en 10 GROUP BY Ejercicio de SQL Ejercicios con Soluciones.

Uso de la Función MIN() en HAVING

Puede utilizar funciones de agregación para filtrar el conjunto de resultados. Normalmente, los criterios de selección se definen utilizando una cláusula WHERE, pero no se puede utilizar WHERE para filtrar por un agregado. En su lugar, debe utilizar la cláusula HAVING.

Para encontrar todos los departamentos en los que el salario mínimo anual es superior a 60k, su consulta sería:

SELECT dept_name, MIN(salary) 
FROM employee_data 
GROUP BY dept_name
HAVING MIN(salary) > 60000
ORDER BY MIN(salary);

Observe que la cláusula HAVING debe utilizarse con la cláusula GROUP BY y que se coloca después de GROUP BY pero antes de ORDER BY.

Los resultados son:

dept_nameMIN(salary)
Sales72527
Production74057

¿Afectan los valores nulos a la función MIN()?

La función SQL MIN() ignora cualquier fila que tenga un valor nulo cuando calcula el mínimo. Por lo tanto, el valor devuelto es el valor no nulo más bajo de la columna especificada.

En los datos de muestra, sólo dos filas tienen valores en la fecha de finalización. En todas las demás filas, esta columna tiene valor NULL. Si buscó la fecha de finalización mínima, debería obtener el valor no nulo más bajo. Vamos a probarlo:

SELECT 
  MIN(term_date) 
FROM employee_data;

Esto devuelve la fecha más pequeña, ignorando los valores nulos:

MIN(term_date)
31/12/2020

La única vez que la función MIN() devolvería un NULL sería si todos los valores de la columna fueran NULL.

Avanzando con la función MIN() de SQL

Hemos explorado los usos de MIN(), pero su viaje de aprendizaje no ha hecho más que empezar; ¡hay mucho más por descubrir! Para obtener una guía rápida sobre el uso de la función SQL MIN(), consulte estos dos libros de recetas:

No hay nada como la resolución práctica de problemas para aprender bien cualquier tema. Nuestro tema Ejercicio de SQL te plantea una serie de retos similares a los que te encontrarás en el mundo real, con ayuda siempre disponible si te atascas.

Por último, LearnSQL.es cuenta con una amplia gama de cursos diseñados para ayudarte en cada etapa de tu aprendizaje. Si quieres convertirte en un experto en SQL, te recomiendo nuestro curso SQL de la A a la Z. Este curso consta de 7 cursos interactivos que te ayudarán a aprender SQL. Esta ruta consta de 7 cursos interactivos que le llevarán desde las funciones para principiantes hasta las avanzadas.

Dé el siguiente paso e impulse su carrera convirtiéndose en un experto en SQL.