0Pricing
SQL Interview Prep · Lección

MIN, MAX y agregación no numérica

Agregue fechas y cadenas y comprenda el significado de MIN aplicado a texto

MIN, MAX y agregación no numérica es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

MIN y MAX más allá de los números

Los candidatos suponen que MIN y MAX solo funcionan con números. A los entrevistadores les encanta preguntar: «¿Qué devuelve MAX(name)? ¿Y MIN(order_date)?»

La realidad es que MIN y MAX funcionan con cualquier tipo ordenable — números, fechas y cadenas. Comprender las reglas de ordenación de cada tipo es la verdadera habilidad que se evalúa aquí.

El caso numérico

Comencemos por lo conocido. En las columnas numéricas, MIN devuelve el valor más pequeño y MAX, el más grande. Sencillo.

Al igual que las demás funciones de agregación, MIN y MAX ignoran los NULL. Un NULL nunca es el mínimo ni el máximo; simplemente se omite. Si todos los valores son NULL, ambas funciones devuelven NULL.

SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;

MIN y MAX con fechas

Las fechas y las marcas de tiempo se pueden ordenar por completo, por lo que MIN(order_date) devuelve la fecha más antigua y MAX(order_date), la más reciente.

Así puede responder a «¿cuándo se realizó el primer pedido?» (MIN) y «¿cuál es la actividad más reciente?» (MAX) sin ordenar ni limitar los resultados. Es la solución idiomática basada en conjuntos.

SELECT
  MIN(order_date) AS first_order,
  MAX(order_date) AS latest_order
FROM orders;

Intervalo de fechas en una sola consulta

Una pregunta de seguimiento habitual es: «¿Cuánto tiempo lleva activo este cliente?» Combine MIN y MAX, y después reste sus resultados.

Esto calcula el intervalo entre el primer y el último pedido. La sintaxis exacta de la resta varía según el dialecto, pero la idea de MIN/MAX es universal y demuestra que puede expresar rangos de forma declarativa.

SELECT
  customer_id,
  MIN(order_date) AS first_order,
  MAX(order_date) AS last_order,
  MAX(order_date) - MIN(order_date) AS active_days
FROM orders
GROUP BY customer_id;

MIN y MAX con cadenas

Esta es la parte que sorprende a muchas personas. En las columnas de texto, MIN y MAX utilizan un orden lexicográfico (alfabético) basado en la intercalación de la columna.

Por tanto, MIN(name) devuelve el nombre que aparece primero en orden alfabético y MAX(name), el que aparece último. MIN sobre {'Carol', 'Alice', 'Bob'} devuelve 'Alice'; MAX devuelve 'Carol'.

SELECT MIN(name) AS first_alpha, MAX(name) AS last_alpha
FROM employees;
-- with Alice, Bob, Carol: 'Alice' and 'Carol'

Intercalación y distinción entre mayúsculas y minúsculas

El orden de las cadenas depende de la intercalación, que controla la distinción entre mayúsculas y minúsculas, así como las reglas regionales. En muchas intercalaciones predeterminadas, las letras mayúsculas pueden ordenarse antes que las minúsculas, por lo que MAX de {'apple', 'Banana'} podría sorprenderle.

En una entrevista, mencione que los resultados de MIN/MAX sobre cadenas dependen de la intercalación. Este matiz distingue una respuesta memorizada de una comprensión real.

Lo que MIN(text) NO significa

Un error frecuente es pensar que MIN(name) devuelve la cadena más corta o que MAX(name) devuelve la más larga. No es así. Se trata exclusivamente del orden de clasificación, no de la longitud.

Si realmente necesita la cadena más larga, ordene por LENGTH(name) y seleccione la primera fila, o utilice MAX(LENGTH(name)) si solo necesita la longitud. No confunda el orden de los valores con su longitud.

SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;

MIN/MAX no combinan columnas

Un detalle importante: MIN y MAX operan de forma independiente sobre una sola columna. No devuelven la fila completa que contiene el valor mínimo o máximo.

Si escribe SELECT MIN(salary), name sin agrupar, no obtiene el nombre de la persona con el salario más bajo: obtiene un error o un nombre arbitrario, según el dialecto. Para obtener la fila completa, utilice ORDER BY + LIMIT o una función de ventana.

-- Wrong assumption: this does NOT give the lowest earner's name.
-- Correct approach to get the whole row:
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 1;

Resumen del comportamiento de NULL en MIN/MAX

Al igual que SUM y AVG, MIN y MAX ignoran los valores NULL. Un NULL no es ni el valor más pequeño ni el más grande.

  • Valores mezclados + NULL: los NULL se ignoran y se devuelve el mínimo o máximo real.
  • Todos los valores son NULL o no hay filas: MIN y MAX devuelven NULL.

Esta coherencia entre las funciones de agregación permite afirmar claramente: «Todas las funciones de agregación estándar ignoran los valores NULL».

Incluirlo en un grupo

MIN y MAX resultan especialmente útiles con GROUP BY para obtener extremos por grupo. «El salario más alto por departamento» es un ejemplo clásico.

Esto devuelve una fila por departamento con el salario máximo de ese departamento. Recuerde: devuelve el valor, no el empleado. Asociar el nombre con ese valor es un problema diferente y habitual.

SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;

Cómo responder con seguridad

Una respuesta sólida en una entrevista sería: «MIN y MAX funcionan con cualquier tipo que se pueda ordenar. Para los números, devuelven el menor y el mayor; para las fechas, la más antigua y la más reciente; y para las cadenas, el orden alfabético según la intercalación de la columna. Ignoran los valores NULL y solo devuelven NULL cuando no existe ningún valor distinto de NULL. Devuelven un único valor, no la fila completa, así que para obtener la fila usaría ORDER BY con LIMIT o una función de ventana».

Comprobación rápida

Razone sobre la agregación de cadenas.

Resumen

Todo lo relacionado con MIN y MAX:

  • Funcionan con cualquier tipo ordenable: números, fechas y cadenas.
  • Las cadenas utilizan el orden alfabético según la intercalación, no la longitud.
  • Fechas: MIN = la más antigua, MAX = la más reciente.
  • Ignoran los valores NULL; si todos son NULL o no hay filas, devuelven NULL.
  • Devuelven un valor, no la fila completa — para obtenerla, utilice ORDER BY + LIMIT.

A continuación: qué ocurre al utilizar funciones de agregación sin GROUP BY.

Preguntas frecuentes

¿La lección «MIN, MAX y agregación no numérica» es gratis?

Sí — el texto completo de «MIN, MAX y agregación no numérica» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «MIN, MAX y agregación no numérica»?

Agregue fechas y cadenas y comprenda el significado de MIN aplicado a texto Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «MIN, MAX y agregación no numérica»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. COUNT(*) frente a COUNT(column) frente a COUNT(DISTINCT)
  2. SUM y AVG con valores NULL
  3. MIN, MAX y agregación no numérica
  4. Agregaciones sin GROUP BY
← Volver a SQL Interview Prep