sql

sql 마무리

148june 2025. 2. 5. 15:27

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

요구사항:

  1. 각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.
    1. 출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
    2. 기대 결과

    3. Name Department Salary
      Alice HR 5000
      Frank IT 7200
      Eve Sales 5500
  2. 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
    1. 출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.

    2. 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