출처: https://leetcode.com/problems/employees-earning-more-than-their-managers/
테이블:Employee
+-------------+---------+
| 열 이름 | 데이터 유형 |
+-------------+---------+
| id | int |
| name | varchar |
| salary | int |
| managerId | int |
+-------------+---------+
id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블의 각 행은 직원의 ID, 이름, 급여 및 관리자의 ID를 나타냅니다.
관리자보다 더 많은 급여를 받는 직원을 찾는 방법을 작성하세요.
결과 테이블을 어떤 순서 로든 반환합니다 .
결과 형식은 다음 예시와 같습니다.
예시 1:
입력:
직원 테이블:
+----+-------+--------+-----------+
| id | name | salary | managerId |
+----+-------+--------+-----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | Null |
| 4 | Max | 90000 | Null |
+----+-------+--------+-----------+ 출력:
+----------+
| 직원 |
+----------+
| Joe |
+----------+ 설명: Joe는 관리자보다 급여가 높은 유일한 직원입니다.
내가 한 풀이
SELECT e.name AS `Employee`
FROM Employee e
JOIN Employee m
ON e.managerId = m.id
WHERE e.salary > m.salary
트러블 슈팅
맨 처음에 서브 쿼리로 할려 했는데
셀프 조인 방식이 더 쉬울거 같았다.
서브 쿼리로 한 방식
SELECT name AS Employee
FROM Employee e
WHERE salary > (
SELECT salary
FROM Employee m
WHERE m.id = e.managerId
);