es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agrupar por con otra función de agregación de filas.

Estoy tratando de obtener el salario máximo de la columna departamento pero también quiero saber la persona en ese determinado departamento.

¿Qué puedo hacer aquí?

create table if not exists employee(
    id serial unique,
    firstName varchar (15),
    lastName varchar(15),
    department varchar (20),
    salary int
);

select department, max(salary) from employee
group by department
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para también obtener el nombre de la persona con el salario máximo en cada departamento, puedes usar una subconsulta para obtener el id del empleado con el salario más alto para cada departamento y unirlo nuevamente a la tabla de empleados en los campos de departamento y salario:

    SELECT e.department, e.salary, e.firstName, e.lastName
    FROM employee e
    JOIN (
        SELECT department, MAX(salary) AS max_salary
        FROM employee
        GROUP BY department
    ) m
    ON e.department = m.department AND e.salary = m.max_salary
    

    Esto devolverá una tabla con el departamento, salario máximo, nombre y apellido del empleado con el salario más alto en cada departamento.

Comments are closed.