Employees 테이블
EmployeeID | Name | Department | Salary | ManagerID |
1 | Alice | HR | 70000 | NULL |
2 | Bob | IT | 90000 | 1 |
3 | Charlie | IT | 80000 | 2 |
4 | David | IT | 85000 | 2 |
5 | Eve | HR | 75000 | 1 |
6 | Frank | Finance | 95000 | NULL |
7 | Grace | Finance | 80000 | 6 |
8 | Heidi | IT | 95000 | 2 |
1. 각 직원의 이름, 부서, 월급, 그리고 그 직원이 속한 부서에서 가장 높은 월급을 받고 있는 직원의 이름과 월급을 조회하는 SQL 쿼리를 작성해주세요.
select e.Name,
e.Department,
e.Salary,
b.Top_Earner,
b.Top_Salary
from employees e
inner join
(
select Department,
Name Top_Earner,
Salary Top_Salary
from
(
select Department,
Name,
Salary,
rank() over(partition by Department order by Salary desc) rn
from employees
)a
where rn = 1
)b on e.Department = b.Department
- 먼저 각 부서별 월급 순위를 윈도우 함수를 통해서 만든 후에 이를 서브쿼리로 만들어서 where절을 이용하여 부서별 1순위만 추출함
- 그 후에 해당 결과를 서브쿼리로 만들어서 서브쿼리와 조인해서 결과를 도출함
2. 부서별로 평균 월급이 가장 높은 부서의 이름과 해당 부서의 평균 월급을 조회하는 SQL 쿼리를 작성해주세요.
select Department,
avg(Salary) Avg_Salary
from employees e
group by Department
order by Avg_Salary desc limit 1
'SQL' 카테고리의 다른 글
SQL 실전! 실제 DB에서 연습해요(5) - Lv5. 예산이 가장 큰 프로젝트는? (1) | 2024.12.10 |
---|---|
SQL 실전! 실제 DB에서 연습해요(4) - Lv5. 가장 많이 팔린 품목은? (0) | 2024.12.10 |
HAVING 절과 WHERE 절의 차이 (0) | 2024.12.10 |
SQL 실전! 실제 DB에서 연습해요(2) - Lv4. 단골 고객님 찾기 (0) | 2024.12.10 |
SQL 실전! 실제 DB에서 연습해요(1) (0) | 2024.12.10 |