Salario Más Alto por Departamento
Tabla: Employee
+--------------+---------+ | Column Name | Type | +--------------+---------+ | id | int | | name | varchar | | salary | int | | departmentId | int | +--------------+---------+ - "id" es la clave primaria para esta tabla. - "departmentId" es una clave foránea del ID de la tabla Department. - Cada fila de esta tabla contiene el ID, nombre, y salario de un empleado. - También contiene el ID de su departamento.
Tabla: Department
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ - "id" es la clave primaria de esta tabla. - Se garantiza que el nombre del departamento no es NULL. - Cada fila de esta tabla indica el ID de un departamento y su nombre.
Escribe una solución para encontrar los empleados que tienen el salario más alto en cada uno de los departamentos.
Devuelve la tabla resultado en cualquier orden.
Ejemplo
Input:
tabla Employee : +----+-------+--------+--------------+ | id | name | salary | departmentId | +----+-------+--------+--------------+ | 1 | Joe | 70000 | 1 | | 2 | Jim | 90000 | 1 | | 3 | Henry | 80000 | 2 | | 4 | Sam | 60000 | 2 | | 5 | Max | 90000 | 1 | +----+-------+--------+--------------+ tabla Department: +----+-------+ | id | name | +----+-------+ | 1 | IT | | 2 | Sales | +----+-------+
Output:
+------------+----------+--------+ | Department | Employee | Salary | +------------+----------+--------+ | IT | Jim | 90000 | | Sales | Henry | 80000 | | IT | Max | 90000 | +------------+----------+--------+ Explicación: Max y Jim ambos tienen el salario más alto en el departamento de IT, y Henry tiene el salario más alto en el departamenteo de Sales.
Soluciones
import pandas as pd
def department_highest_salary(employee: pd.DataFrame, department: pd.DataFrame) -> pd.DataFrame:
result = employee.merge(department, left_on='departmentId', right_on='id')
max_salaries = result.groupby('departmentId')['salary'].transform('max')
result = result[result['salary'] == max_salaries]
return result[['name_y', 'name_x', 'salary']].rename(columns={
'name_y': 'Department',
'name_x': 'Employee',
'salary': 'Salary'
})