문제 5-1
각 직원의 이름, 부서, 월급, 그리고 그 직원이 속한 부서에서 가장 높은 월급을 받고 있는 직원의 이름과 월급을 조회하는 SQL 쿼리를 작성해주세요.
[풀이]
일단 이름 순으로 정렬이 돼있음. 의도적으로 이름 첫 철자가 abcdefgh여. 그리고 Top_ 두 컬럼을 조회하려면 부서별 최대 연봉과 그 직원을 조회하는 서브쿼리가 필요할 듯?
[첫 시도]
/* 성공 코드 */
select Name
, Department
, Salary
, case when Department = 'HR' then (select name from employees e where department = 'HR' order by salary desc limit 1)
when Department = 'IT' then (select name from employees e where department = 'IT' order by salary desc limit 1)
when Department = 'Finance' then (select name from employees e where department = 'Finance' order by salary desc limit 1) end 'Top_Earner'
, case when Department = 'HR' then (select salary from employees e where department = 'HR' order by salary desc limit 1)
when Department = 'IT' then (select salary from employees e where department = 'IT' order by salary desc limit 1)
when Department = 'Finance' then (select salary from employees e where department = 'Finance' order by salary desc limit 1) end 'Top_Salary'
from employees e
order by 1
의외로 case문으로 한번에 해결하긴 했는데, 어우 지저분하다. 좀 가볍게 만들어줄 순 없을까나
문제 5-2
부서별로 평균 월급이 가장 높은 부서의 이름과 해당 부서의 평균 월급을 조회하는 SQL 쿼리를 작성해주세요.
[첫 시도]
select Department
, avg(Salary) 'Avg_Salary'
from employees e
group by 1
order by 2 desc
limit 1
이렇게 간단히 풀어버렸습니다~ 그런데 IT부서랑 Finance부서의 평균 Salary가 같은디? 그래서 내 결과로는 IT가 아니라 Finance가 나온다... 머쓱...
'SQL 공부' 카테고리의 다른 글
사전캠프 달리기반 퀘스트 07 (1) | 2024.10.24 |
---|---|
사전캠프 달리기반 퀘스트 06 (1) | 2024.10.23 |
사전캠프 달리기반 퀘스트 03-04 (2) | 2024.10.20 |
사전캠프 달리기반 퀘스트 01-02 (0) | 2024.10.19 |
사전캠프 걷기반 퀘스트 11 (마지막 연습 문제) (1) | 2024.10.14 |