백엔드 부트캠프[사전캠프]/문제풀이
[SQL 달리기반] Lv5. 예산이 가장 큰 프로젝트는?
s_y_130
2025. 6. 19. 16:50
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Name VARCHAR(100),
Department VARCHAR(50),
Salary INT
);
INSERT INTO Employees (EmployeeID, Name, Department, Salary) VALUES
(1, 'Alice', 'HR', 5000),
(2, 'Bob', 'IT', 7000),
(3, 'Charlie', 'IT', 6000),
(4, 'David', 'HR', 4500),
(5, 'Eve', 'Sales', 5500),
(6, 'Frank', 'IT', 7200);
CREATE TABLE Projects (
ProjectID INT PRIMARY KEY,
ProjectName VARCHAR(100),
Budget INT
);
INSERT INTO Projects (ProjectID, ProjectName, Budget) VALUES
(101, 'Alpha', 10000),
(102, 'Beta', 15000),
(103, 'Gamma', 12000),
(104, 'Delta', 8000);
CREATE TABLE EmployeeProjects (
EmployeeID INT,
ProjectID INT,
PRIMARY KEY (EmployeeID, ProjectID),
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID),
FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID)
);
INSERT INTO EmployeeProjects (EmployeeID, ProjectID) VALUES
(1, 101),
(2, 101),
(3, 102),
(4, 103),
(5, 104),
(6, 102),
(6, 103);
✅문제:
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 쿼리를 작성해주세요.
- a. 출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
- b.기대 결과
Name
|
Department
|
Salary
|
Alice
|
HR
|
5000
|
Frank
|
IT
|
7200
|
Eve
|
Sales
|
5500
|
2.직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
- a.출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.
Name
|
ProjectName
|
Budget
|
Bob
|
Beta
|
15000
|
Charlie
|
Beta
|
15000
|
Frank
|
Beta
|
15000
|
David
|
Gamma
|
12000
|
Frank
|
Gamma
|
12000
|
✅제약사항:
- 두 쿼리 모두 서브쿼리를 사용해주세요.
- 서브쿼리를 통해 특정 조건을 만족하는 데이터를 필터링하고, 그 결과를 최종 쿼리에 반영해야 합니다.
✅문제풀이:
1.각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.
부서별 가장 높은 월급
select Department, max(Salary)
from Employees
group by Department;
최종 결과
select e.Name, e.Department, e.Salary
from Employees e
where e.Salary = (
select max(Salary)
from Employees e2
where e2.Department=e.Department
);
2.직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
select
e.Name,
p.ProjectName,
p.Budget
from Employees e
join EmployeeProjects ep on e.EmployeeID=ep.EmployeeID
join Projects p on p.ProjectID=ep.ProjectID
where p.Budget >= 10000;