데이터베이스/쿼리 문제

181. Employees Earning More Than Their Managers (leetCode 코딩 알고리즘 문제)

daslyee 2021. 8. 28. 01:22
728x90

1. 문제 : 

Employee 테이블에는 관리자를 포함한 모든 직원이 있습니다. 모든 직원에게는 ID가 있으며 관리자 ID에 대한 열도 있습니다.

Employee 테이블에서 관리자보다 수입이 많은 직원을 찾는 SQL 쿼리를 작성합니다. 위의 표에서 Joe는 매니저보다 수입이 많은 유일한 직원입니다.

 

2. 정답 : Description 옆에 Solution 탭으로 이동 또는 

https://lei-d.gitbook.io/sql/leetcode/181employees-earning-more-than-their-managers 참고

 

181_Employees Earning More Than Their Managers

 

lei-d.gitbook.io

3. 정답 해설 : 

정답을 찾아봤다면 정답이 여러개란 걸 확인 할 수 있을 것이다. 해결방안은 여러개이니 이해하기 빠른거로 하길 권장한다.

 

테이블이 하나라는 것을 기억한다.

Joe의 관리자는 Sam 이라는 것을 확인하고, Henry의 관리자는 Max 지만 관리자보다 수입이 많은 직원을 찾는 SQL 쿼리라는 것을 잊지말자.

 

Joe와 Henry의 tb1 과 Sam과 Max의 tb2 를 조인한다고 생각해보자.

Joe의 ManagerId는 3임으로 Id가 3인 Sam이 그의 관리자를 찾아야하니 tb1의 ManagerId 와 tb2의 Id를 매칭시키고,

관리자보다 수입이 많은 직원을 찾아야하니 tb1의 Salary는 tb2의 Salary 보다 커야할 것이다.

SELECT tb1.Name AS Employee
FROM Employee AS tb1
INNER JOIN Employee AS tb2
ON tb1.ManagerId = tb2.Id  
WHERE tb1.Salary > tb2.Salary 
-- result : Joe

 

 

 



728x90