Employees 테이블:
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 쿼리를 작성해주세요.
- 출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
- 기대 결과
Name Department Salary Alice HR 5000 Frank IT 7200 Eve Sales 5500
- 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
- 출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.
Name ProjectName Budget Bob Beta 15000 Charlie Beta 15000 Frank Beta 15000 David Gamma 12000 Frank Gamma 12000
제약사항:
- 두 쿼리 모두 서브쿼리를 사용해주세요.
- 서브쿼리를 통해 특정 조건을 만족하는 데이터를 필터링하고, 그 결과를 최종 쿼리에 반영해야 합니다.
1. 각 부서에서 가장 높은 월급을 받는 직원들만 조회
SELECT Name, Department, Salary
FROM Employees E
WHERE Salary = (
SELECT MAX(Salary)
FROM Employees
WHERE Department = E.Department
);
설명:
- 서브쿼리를 사용하여 각 부서별 최대 월급을 구합니다.
- 메인 쿼리에서는 각 직원의 월급이 자신이 속한 부서의 최대 월급과 일치하는 경우만 선택합니다.
2. 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트 조회
SELECT E.Name, P.ProjectName, P.Budget
FROM Employees E
JOIN EmployeeProjects EP ON E.EmployeeID = EP.EmployeeID
JOIN Projects P ON EP.ProjectID = P.ProjectID
WHERE P.ProjectID IN (
SELECT ProjectID
FROM Projects
WHERE Budget >= 10000
);
- 서브쿼리를 사용하여 예산이 10,000 이상인 프로젝트의 ProjectID 목록을 가져옵니다.
- 메인 쿼리에서는 직원과 프로젝트 매핑 테이블을 조인한 후, 서브쿼리에서 얻은 프로젝트들만 필터링하여 해당하는 직원, 프로젝트명, 예산을 출력합니다.
'sql' 카테고리의 다른 글
having group by sum collase (0) | 2025.02.04 |
---|---|
JOIN, 서브쿼리, GROUP BY, HAVING 등 SQL 기능 (0) | 2025.02.03 |
with (0) | 2025.01.31 |
left join (0) | 2025.01.31 |
date round() (0) | 2025.01.24 |