|
1 | 1 | # Time: O(n^2)
|
2 | 2 | # Space: O(n)
|
3 | 3 |
|
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 |
14 | 22 |
|
0 commit comments