Post

퀘스트 - 달리기반 Lv5. 예산이 가장 큰 프로젝트는?

퀘스트 - 달리기반 Lv5. 예산이 가장 큰 프로젝트는?

문제

  • Employees 테이블:
EmployeeIDNameDepartmentSalary
1AliceHR5000
2BobIT7000
3CharlieIT6000
4DavidHR4500
5EveSales5500
6FrankIT7200
  • Products 테이블:
ProjectIDProjectNameBudget
101Alpha10000
102Beta15000
103Gamma12000
104Delta8000
  • EmployeeProjects 테이블:
EmployeeIDProjectID
1101
2101
3102
4103
5104
6102
6103


  • 요구사항:
    • 각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.
      • a. 출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
      • b. 기대 결과
      NameDepartmentSalary
      AliceHR5000
      FrankIT7200
      EveSales5500
    • 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
      • a. 출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.
      NameProjectNameBudget
      BobBeta15000
      CharlieBeta15000
      FrankBeta15000
      DavidGamma12000
      FrankGamma12000


제약사항:

  • 두 쿼리 모두 서브쿼리를 사용해주세요.
  • 서브쿼리를 통해 특정 조건을 만족하는 데이터를 필터링하고, 그 결과를 최종 쿼리에 반영해야 합니다.




문제 풀이

  • 문제1 - 각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
    e.Name,
    e.Department,
    e.Salary
FROM
    Employees e
HAVING e.Salary = (
    SELECT
        MAX(Salary)
    FROM
        Employees e2
    WHERE
        e.Department=e2.Department
    );


  • 문제2 - 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
1
2
3
4
5
6
7
8
9
SELECT
    e.Name,
    p.ProjectName,
    p.Budget
FROM
    Employees e JOIN EmployeeProjects ep ON e.EmpolyeeID=ep.EmployeeID
                JOIN Projects p ON ep.ProejctID=Projects.ProjectID
WHERE
    p.Budget >= 10000;
  • 서브쿼리가 필요없는 문제에 해당됩니다
This post is licensed under CC BY 4.0 by the author.