SQL 달리기반. 예산이 가장 큰 프로젝트 찾기

김동욱·2024년 10월 25일

문제:

Employees 테이블:

EmployeeIDNameDepartmentSalary
1AliceHR5000
2BobIT7000
3CharlieIT6000
4DavidHR4500
5EveSales5500
6FrankIT7200

Projects 테이블:

ProjectIDProjectNameBudget
101Alpha10000
102Beta15000
103Gamma12000
104Delta8000

EmployeeProjects 테이블:

EmployeeIDProjectID
1101
2101
3102
4103
5104
6102
6103

요구사항:

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

    2. 기대 결과

      NameDepartmentSalary
      AliceHR5000
      FrankIT7200
      EveSales5500
  2. 직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
    1. 출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.

      NameProjectNameBudget
      BobBeta15000
      CharlieBeta15000
      FrankBeta15000
      DavidGamma12000
      FrankGamma12000

1번 문제 풀이

  1. 필요한 칼럼 : 직원 이름, 직원 부서, 직원 월급, 부서별 최대 월급
  2. 필요한 테이블 : 직원 테이블과 부서별 최대 월급 계산하는 테이블
    부서로 조인하여 최대 월급 추가 출력
employees e join (
	select Department, max(Salary) as Dep_MaxSal 
	from employees
	group by Department
) as e2 on e.Department = e2.Department
  1. 조건 : 직원 월급이 최대 월급과 동일한 직원 데이터만 출력하기
where Salary = max(Salary)
  1. 정답

select e.Name, e.Department, e2.Dep_MaxSal
from employees e join (
	select Department, max(Salary) as Dep_MaxSal 
	from employees
	group by Department
) as e2 on e.Department = e2.Department
where Salary = Dep_MaxSal

2번 문제 풀이

  1. 필요한 칼럼 : 직원 이름, 프로젝트 이름, 프로젝트 예산
select e.Name, p.ProjectName, p.Budget
  1. 테이블 테이블 : 직원 테이블, 프로젝트 테이블, eid_pid 테이블
employeeprojects ep 
join projects p on p.ProjectID = ep.ProjectID
join employees e on e.EmployeeID = ep.EmployeeID
  1. 조건 : 프로젝트 예산 >= 10000
where p.Budget >= 10000
  1. 정답

select e.Name, p.ProjectName, p.Budget
from employeeprojects ep 
	join projects p on p.ProjectID = ep.ProjectID
	join employees e on e.EmployeeID = ep.EmployeeID
where p.Budget >= 10000
profile
갓겜만들어야지

0개의 댓글