아래에 나오는 데이터는 서버에 없는 데이터 이기때문에 따로 CSV 파일을 만들어 LOCALHOST(MY SQL) 서버에 데이터를 넣어주어야한다.
방법:https://computerreport.tistory.com/16
CSV 파일을 이용해 데이터 가져오기(MY SQL)
해당 테이블을 드래그하여 복사하고 EXCEL 파일에 붙여넣은뒤 CSV 파일로 저장 Click 부분을 누르고 설정한 Username 과 MySQL 설치시 설정한 비밀번호 입력 -> 완료 Database 파일 우클릭 후 Create New
computerreport.tistory.com
문제:
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 쿼리를 작성해주세요.
출력 결과에는 직원의 이름, 부서, 그리고 월급이 포함되어야 합니다.
ex)
Name
|
Department
|
Salary
|
Alice
|
HR
|
5000
|
Frank
|
IT
|
7200
|
Eve
|
Sales
|
5500
|
1-1 rank 함수를 쓰는 방법
select a.Name,a.Department,a.Salary
from(select Name,
Department,
Salary,
rank()over(partition by Department order by Salary desc) rank_num
from Employees) a
where rank_num = 1
- 부서별로 Salary 를 역순으로 정렬시켜 rank 의 num 값이 1인것만 추출한다.
2-2 where 과 join 을 이용한 방법
select Name,Department,Salary
from Employees
where Salary in (select Max(Salary)
from Employees
group by Department)
- 부서별로 가장 높은 Salary 를 추출한다 -> in 을 사용하여 Salary 에 포함된 이름과 부서와 월급을 출력한다.
2.직원이 참여한 프로젝트 중 예산이 10,000 이상인 프로젝트만을 조회하는 SQL 쿼리를 작성해주세요.
출력 결과에는 직원 이름, 프로젝트 이름, 그리고 프로젝트 예산이 포함되어야 합니다.
ex)
Name
|
ProjectName
|
Budget
|
Bob
|
Beta
|
15000
|
Charlie
|
Beta
|
15000
|
Frank
|
Beta
|
15000
|
David
|
Gamma
|
12000
|
Frank
|
Gamma
|
12000
|
select Name,ProjectName,Budget
from Employees e join EmployeesProjects ep on e.EmployeeID=ep.EmployeeID
join Projects p on ep.ProjectID =p.projectID
where Budget>=10000
order by 3 desc
- emloyees 의 테이블의 EmloyeeID 와 EmployeesProjects 의 EmloyeeID 가 동일한 것을 기준으로 join 실행 -> project 의 ProjectID 와 EmployeesProjects 의 ProjectID가 동일한 것을 기준으로 join 실행 -> Budget 이 10000원 이상인것만 출력
'코딩테스트 > SQL' 카테고리의 다른 글
[Mysql] 가격대 별 상품 개수 구하기 (0) | 2025.04.07 |
---|---|
[SQL]NULL 처리하기 (0) | 2025.03.07 |
[SQL]Lv5. 가장 많이 팔린 품목은? (0) | 2025.01.23 |
[SQL]Lv4(2). 가장 높은 월급을 받는 직원은? (0) | 2025.01.21 |
[SQL]Lv4. 단골 고객님 찾기 (0) | 2025.01.20 |