데이터 설명
EmployeeID
|
Name
|
Department
|
Salary
|
1
|
Alice
|
HR
|
5000
|
2
|
Bob
|
IT
|
7000
|
3
|
Charlie
|
IT
|
6000
|
4
|
David
|
HR
|
4500
|
5
|
Eve
|
Sales
|
5500
|
6
|
Frank
|
IT
|
7200
|
Projects 테이블:
ProjectID
|
ProjectName
|
Budget
|
101
|
Alpha
|
10000
|
102
|
Beta
|
15000
|
103
|
Gamma
|
12000
|
104
|
Delta
|
8000
|
EmployeeProjects 테이블:
EmployeeID
|
ProjectID |
1
|
101
|
2
|
101
|
3
|
102
|
4
|
103
|
5
|
104
|
6
|
102
|
6
|
103
|
문제
각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.
출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
기대 결과:
문제 풀이
첫번째~세번째 열 모두 Employees 테이블에서 조회 가능
부서별(GROUP BY Department)로 가장 높은 월급(MAX(Salary))을 받는 직원의 이름
(1) 부서별(GROUP BY Department)로 가장 높은 월급(MAX(Salary))을 받는 행을 조회하기
(2) (1)번 테이블에 Employees의 Name컬럼을 LEFT JOIN
(1) max_salaries
SELECT Department
, MAX(Salary)
FROM employees
GROUP BY Department
(2)
SELECT e.Name
, max_salaries.Department
, max_salaries.Salary
FROM
(
SELECT Department
, MAX(Salary) AS Salary
FROM employees
GROUP BY Department
) max_salaries
LEFT JOIN employees e
ON max_salaries.Department = e.Department
AND max_salaries.Salary = e.Salary
결과 확인:
문제
직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요. 출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.
문제 풀이
- 열을 조회하는 데 필요한 테이블과 컬럼들
employees.Name / projects.ProjectName / projects.Budget - 행을 조회하는 데 필요한 조건식
projects.Budget >= 10000
EmployeeProjects에 employees.Name / projects.ProjectName / projects.Budget를 조인
SELECT ep.*
, e.Name
FROM employeeprojects ep
LEFT JOIN employees e
ON ep.EmployeeID = e.EmployeeID
SELECT ep2.*
, p.ProjectName
, p.Budget
FROM
(
SELECT ep.*
, e.Name
FROM employeeprojects ep
LEFT JOIN employees e
ON ep.EmployeeID = e.EmployeeID
) ep2
LEFT JOIN projects p
ON ep2.ProjectID = p.ProjectID
조건식으로 조회하기
SELECT ep3.Name
, ep3.ProjectName
, ep3.Budget
FROM
(
SELECT ep2.*
, p.ProjectName
, p.Budget
FROM
(
SELECT ep.*
, e.Name
FROM employeeprojects ep
LEFT JOIN employees e
ON ep.EmployeeID = e.EmployeeID
) ep2
LEFT JOIN projects p
ON ep2.ProjectID = p.ProjectID
) ep3
WHERE ep3.Budget >= 10000
ORDER BY ep3.Name
결과 확인:
'개발일지 > SQL' 카테고리의 다른 글
챌린지반 숙제 - WITH절 활용하기 (1) | 2024.12.09 |
---|---|
SQL 실전!(5) (2) | 2024.10.24 |
SQL 실전!(4) (2) | 2024.10.24 |
SQL 실전!(3) (0) | 2024.10.24 |
SQL 실전!(2) (0) | 2024.10.24 |
댓글