Función MAX en Oracle

La función MAX en Oracle es una de las funciones de agregación más utilizadas, diseñada para devolver el valor máximo dentro de un conjunto de datos o columna. Esta función es altamente versátil y se puede aplicar a distintos tipos de datos, como números, cadenas, fechas y horas, así como a tipos más avanzados disponibles en Oracle.

Con MAX, puedes identificar el valor más alto dentro de un conjunto de registros, lo que resulta clave en cálculos, análisis y resúmenes de datos. Además, en consultas con agrupación mediante la cláusula GROUP BY, esta función permite obtener el valor máximo en cada grupo, proporcionando información detallada y relevante.

En este artículo, te mostraré cómo usar la función MAX en Oracle en diversos escenarios, optimizando su implementación para obtener el mejor rendimiento y destacando sus aplicaciones más comunes. Para más información, consulta la documentación oficial de la función MAX en Oracle.

Versión

Este artículo ha sido redactado utilizando la versión Oracle Database 23ai para garantizar compatibilidad y precisión en los ejemplos presentados.

Sintaxis

La sintaxis de la función MAX en Oracle es la siguiente:

select MAX(expresión)
from tabla

La función MAX no es exclusiva de la cláusula SELECT. También es posible utilizarla en las cláusulas WHERE y HAVING.

Ejemplos

Usaremos la siguiente tabla llamada empleados para realizar los ejemplos (al final de la página está disponible el script para crearla)

Oracle Tabla de Empleados

Obtener el sueldo más alto de todos los empleados

SELECT
    MAX(SUELDO)
FROM
    EMPLEADOS;

Explicación: La función MAX devuelve el valor máximo en la columna sueldo de la tabla empleados.

Obtener el sueldo más alto de todos los empleados

Obtener el sueldo máximo por departamento

SELECT
    ID_DEPARTAMENTO,
    MAX(SUELDO) AS SUELDO_MAXIMO
FROM
    EMPLEADOS
GROUP BY
    ID_DEPARTAMENTO;

Explicación: Agrupa los datos por departamento y devuelve el sueldo más alto de cada grupo.

Obtener el sueldo máximo por departamento

Recuerda que si en la cláusula SELECT escribes mas campos que no usen la función de agregación, debes incluirlos en el GROUP BY.

Uso típico: Comparar el máximo de una métrica dentro de categorías específicas.

Obtener el nombre del empleado con el sueldo más alto

SELECT
    NOMBRE,
    SUELDO
FROM
    EMPLEADOS
WHERE
    SUELDO = (
        SELECT
            MAX(SUELDO)
        FROM
            EMPLEADOS
    );

Explicación: Utiliza una subconsulta para encontrar el sueldo más alto en la tabla y luego selecciona el empleado que tiene ese sueldo.

Obtener el nombre del empleado con el sueldo más alto

Uso típico: Identificar a la persona o entidad asociada con el valor máximo.

Recuerda que en un consulta siempre se evalúa primero la cláusula FROM seguido del WHERE y por ultimo la cláusula SELECT. Más información aquí.

Filtrar grupos con MAX y HAVING

SELECT
    ID_DEPARTAMENTO,
    MAX(SUELDO) AS SUELDO_MAXIMO
FROM
    EMPLEADOS
GROUP BY
    ID_DEPARTAMENTO
HAVING
    MAX(SUELDO) > 7000;

Encuentra el sueldo máximo en cada departamento y filtra aquellos donde el sueldo más alto sea mayor a 7000.

Filtrar grupos con MAX y HAVING

Uso típico: Identificar grupos destacados según sus valores máximos.

La cláusula HAVING actúa como un WHERE, con la diferencia que debe utilizar funciones de agregación.

Obtener la fecha más reciente de contratación

SELECT
    MAX(FECHA_ALTA) AS FECHA_RECIENTE
FROM
    EMPLEADOS;

Explicación: Encuentra la fecha más reciente en la columna fecha_alta

Obtener la fecha más reciente de contratación

Uso típico: Determinar el registro más reciente en un conjunto de datos temporales.

Obtener el máximo combinando cálculos

SELECT
    MAX(SUELDO * 1.1) AS SUELDO_MAXIMO_INCREMENTADO
FROM
    EMPLEADOS;

Explicación: Calcula un incremento del 10% para cada sueldo y luego devuelve el valor máximo resultante.

Obtener el máximo combinando cálculos

Uso típico: Realizar análisis considerando ajustes o proyecciones.

Ejemplo completo

Copia y pega el siguiente código en tu consola de Oracle y realiza paso a paso leyendo los comentarios:


🚫 Acceso restringido

Para visualizar las instrucciones, es necesario iniciar sesión.

Puedes hacerlo sin registrarte desde el lateral derecho o los comentarios, utilizando tu cuenta de Microsoft o Google.

Fin acceso restringido 🚫


Escribir un comentario