CodeGym /Cursos /SQL SELF /Valores mínimos y máximos: MIN() y M...

Valores mínimos y máximos: MIN() y MAX()

SQL SELF
Nivel 7 , Lección 4
Disponible

Vamos a sumergirnos en el mundo de los extremos en los datos — buscando los valores mínimos y máximos. Tranquilo, SQL no te va a pedir que aprendas algo totalmente nuevo, pero sí vas a aprender a encontrar los valores más grandes y más pequeños en las tablas. Estas funciones se usan en todas partes: desde analizar ratings de pelis en IMDb hasta calcular la temperatura mínima en Marte.

MIN() y MAX() son funciones agregadas que devuelven el valor mínimo y máximo de un conjunto de datos. Funcionan como cazadores buena onda de extremos: MIN() busca el elemento más pequeño y MAX() el más grande. No solo sirven para números: puedes buscar la cadena o la fecha más pequeña o más grande.

-- Forma general de las funciones MIN y MAX
SELECT 
    MIN(column_name) AS min_value,
    MAX(column_name) AS max_value
FROM table_name;

¡Fácil y directo! Ahora vamos a ver cómo funciona esta magia en diferentes escenarios.

Sintaxis y ejemplos básicos

Datos numéricos

Supón que tienes una tabla employees con una columna de salarios (salary).

Queremos saber el salario mínimo y máximo.

Tabla employees

id name salary
1 Anna Song 45000
2 Otto Art 30000
3 Maria Chi 120000
4 Alex Lin 90000
5 Eva Tan 60000
-- Ejemplo para datos numéricos
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees;

Resultado

min_salary max_salary
30000 120000

Datos de texto

Puedes usar MIN() y MAX() con datos de texto.

Se comparan por orden alfabético (sí, hasta las letras pueden ser "las más pequeñas" o "las más grandes").

Supón que tienes una tabla students donde la columna name guarda los nombres de los estudiantes.

Tabla students

id name
1 Anna
2 Otto
3 Maria
4 Ben
5 Zoe
-- Ejemplo para datos de texto
SELECT 
    MIN(name) AS first_name_in_order,
    MAX(name) AS last_name_in_order
FROM students;

Resultado

first_name_in_order last_name_in_order
Anna Zoe

Fechas y tiempo
Buscamos la fecha más temprana y la más tardía de la tabla events.

Tabla events

id event_name event_date
1 New Year Party 2023-01-01
2 Summer Fest 2023-06-15
3 Halloween Bash 2023-10-31
4 Year End Gala 2023-12-31
-- Ejemplo para trabajar con fechas
SELECT 
    MIN(event_date) AS earliest_date,
    MAX(event_date) AS latest_date
FROM events;

Resultado

earliest_date latest_date
2023-01-01 2023-12-31

Uso de MIN() y MAX() en tablas con valores NULL

Si una columna tiene valores NULL, puedes dormir tranquilo: SQL los ignora al calcular.

Eso significa que MIN() y MAX() solo trabajan con los valores "normales".

Tabla employees_with_null

id name salary
1 Otto 30000
2 Maria NULL
3 Anna 120000
4 John NULL
-- Tabla con NULL
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees_with_null;

Si en la columna salary hay registros con NULL, simplemente se ignoran.

min_salary max_salary
30000 120000

Pero si TODA la columna es NULL, el resultado será NULL.

Ejemplos de uso de MIN() y MAX() en tareas reales

Encontrar el empleado más viejo y el más joven

Tabla employees

id name birth_date
1 Otto 1980-05-10
2 Maria 1990-11-20
3 Anna 1975-03-15
4 John 2000-08-01

En la tabla employees hay un campo birth_date que guarda las fechas de nacimiento de los empleados. Vamos a encontrar el más viejo y el más joven.

SELECT
    MIN(birth_date) AS oldest_employee,
    MAX(birth_date) AS youngest_employee
FROM employees;

Resultado:

oldest_employee youngest_employee
1975-03-15 2000-08-01

Análisis de ventas

id amount
1 150.00
2 75.50
3 200.00
4 120.00
5 500.00
6 90.00

En la tabla sales hay un campo amount que guarda los importes de las ventas. Vamos a buscar la venta mínima y máxima.

SELECT
    MIN(amount) AS smallest_sale,
    MAX(amount) AS largest_sale
FROM sales;

Resultado de la consulta

smallest_sale largest_sale
75.50 500.00

Buscar los primeros y últimos pedidos

Si tienes una tabla orders con el campo order_date, puedes averiguar fácilmente la primera y la última fecha de pedido.

Tabla original orders

order_id customer_id order_date amount
101 1 2023-01-15 10:23:00 250.00
102 2 2023-02-10 14:45:00 150.00
103 3 2023-01-05 09:10:00 300.00
104 1 2023-03-22 16:30:00 500.00
105 4 2023-01-25 11:00:00 120.00
SELECT
    MIN(order_date) AS first_order,
    MAX(order_date) AS last_order
FROM orders;

Resultado de la consulta:

first_order last_order
2023-01-05 09:10:00 2023-03-22 16:30:00

Detalles de cómo funcionan MIN() y MAX()

Comparación de textos: cuando trabajas con cadenas, MIN() y MAX() las comparan por orden alfabético.

Trabajo con NULL: NULL se ignora si hay otros valores en la columna. Pero si todos los valores son NULL, el resultado será NULL.

Comparación de fechas: SQL tiene en cuenta no solo el año, sino también el mes, día, horas y minutos.

1
Cuestionario/control
Agregación de datos, nivel 7, lección 4
No disponible
Agregación de datos
Agregación de datos
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION