2025. 3. 4. 17:23ㆍSQL
🔒 문제
다음과 같은 테이블 구조를 고려합니다.
Employees 테이블
employee_id name department_id salary hire_date
101 John 1 5000 2020-01-10
102 Alice 2 7000 2019-03-25
103 Bob 1 6000 2018-07-11
104 Charlie 3 4500 2021-08-19
105 David 2 8000 2017-12-05
Departments 테이블
department_id department_name
1 HR
2 Engineering
3 Sales
1. 각 부서별 평균 급여를 계산하고, 해당 부서에서 급여가 평균 급여보다 높은 직원들의 이름과 급여를 출력하세요.
2.각 부서별로 최고 급여를 받는 직원의 이름과 급여를 출력하세요. 만약 여러 명이 최고 급여를 받는다면 모두 출력해야 합니다.
3.전체 직원들 중에서 입사일이 가장 늦은 직원의 이름과 입사일을 출력하세요.
전체 급여의 합을 구하고, 그 합에서 각 직원의 급여가 차지하는 비율을 계산하여, 이름과 급여 비율을 출력하세요.
🔓 내가 푼 답
1.
WITH department_avg_salary AS (
SELECT d.department_id, AVG(e.salary) AS avg_salary
FROM Departments d
JOIN Employees e ON d.department_id = e.department_id
GROUP BY d.department_id
)
SELECT e.name, e.salary
FROM Employees e
JOIN department_avg_salary a ON e.department_id = a.department_id
WHERE e.salary > a.avg_salary;
2.
WITH department_max_salary AS (
SELECT department_id, MAX(salary) AS max_salary
FROM Employees
GROUP BY department_id
)
SELECT e.name, e.salary, e.department_id
FROM Employees e
JOIN department_max_salary d ON e.department_id = d.department_id
WHERE e.salary = d.max_salary;
3.
WITH total_salary AS (
SELECT SUM(salary) AS total_salary
FROM Employees
)
SELECT e.name, e.salary, (e.salary / t.total_salary) * 100 AS salary_percentage
FROM Employees e, total_salary t;
'SQL' 카테고리의 다른 글
| [LeetCode] 185. Department Top Three Salaries (0) | 2025.03.10 |
|---|---|
| [SQL] 연습 문제 모음5 (0) | 2025.03.10 |
| [SQL] 문제 풀이 모음4 (0) | 2025.03.06 |
| [SQL] 연습 문제 모음3 (0) | 2025.03.04 |
| [SQL] 연습 문제 모음1 (0) | 2025.03.04 |