Skip to content

Commit 1173045

Browse files
authored
department-highest-salary
1 parent 23d19f3 commit 1173045

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

MySQL/department-highest-salary.sql

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
# Time: O(n^2)
22
# Space: O(n)
33

4-
SELECT d.Department AS Department, e.Name AS Employee, d.Salary AS Salary
5-
FROM (SELECT Department.Id AS DepartmentId, Department.Name AS Department, emp.Salary AS Salary
6-
FROM Department JOIN (SELECT DepartmentId, MAX(Salary) AS Salary FROM Employee GROUP BY DepartmentId) emp
7-
ON Department.Id = emp.DepartmentId) d
8-
JOIN Employee e
9-
ON e.DepartmentId = d.DepartmentId and e.Salary = d.Salary
10-
11-
SELECT Department.Name AS Department, Employee.Name AS Employee, Employee.Salary AS Salary
12-
FROM Department JOIN Employee ON Employee.DepartmentId = Department.Id
13-
WHERE Employee.Salary IN (SELECT MAX(e.Salary) FROM Employee e WHERE e.DepartmentId = Employee.DepartmentId)
4+
SELECT DEPARTMENT,EMPLOYEE,SALARY FROM
5+
(SELECT D.NAME AS DEPARTMENT,E.NAME AS EMPLOYEE,E.SALARY,RANK()OVER(PARTITION BY D.ID ORDER BY SALARY DESC)
6+
AS RN FROM DEPARTMENT D JOIN EMPLOYEE E ON E.DEPARTMENTID = D.ID)TEMP WHERE RN=1;
7+
8+
/** SOLUTION TWO **/
9+
10+
SELECT
11+
D.name AS Department,rankedE.name AS Employee,rankedE.salary AS Salary
12+
FROM (
13+
SELECT
14+
RANK() OVER (
15+
PARTITION BY E.departmentId ORDER BY E.salary DESC) AS s_rank
16+
,id,name,salary,departmentId
17+
FROM Employee E
18+
) rankedE
19+
LEFT JOIN Department D
20+
ON rankedE.departmentId = D.id
21+
WHERE rankedE.s_rank = 1
1422

0 commit comments

Comments
 (0)