질답은 아래와 같다.

Q: 자 CTE 들어가기전, 나는 정말 자주 나오고, 리트코드 + 회사 입사 코딩테스트 (SQL 데이터분석)에 맞게 문제를 풀어보고 싶어. 도와줄래?

A:

 

문제 1: 부서별 평균보다 높은 연봉 가진 직원 찾기  (난이도:⭐)

각 부서에서, 해당 부서의 평균 연봉보다 높은 연봉을 받는 직원의 이름과 연봉을 출력하라.

  • 테이블: employees(department, name, salary)
# 각 부서에서, 해당 부서의 평균 연봉보다 높은 연봉을 받는 직원의 이름과 연봉을 출력하라.
# 테이블: employees(department, name, salary)

SELECT name,salary,department FROM employees e
WHERE salary > 
	(SELECT AVG(salary)
    FROM employees
	WHERE department = e.department);


# 핵심 -> 부서 평균 연봉을 구하고, 그걸 직원 연봉과 비교해야함
# (상관)서브쿼리 써야함

🔥 문제 2: 매니저가 3명 이상 직원 관리하는 경우만 출력 (난이도:⭐⭐)

직원 수가 3명 이상인 매니저의 이름과 직원 수를 출력하라.

  • 테이블: employees(employeeId, name, managerId)
# 문제 2: 매니저가 3명 이상 직원 관리하는 경우만 출력 (난이도:⭐⭐)
# 직원 수가 3명 이상인 매니저의 이름과 직원 수를 출력하라.
# 테이블: employees(employeeId, name, managerId)

SELECT m.name AS manger_name, COUNT(e.employeeId) AS ct
FROM employees e
INNER JOIN employees m
		ON e.managerId = m.employeeId
GROUP BY m.name
HAVING COUNT(e.employeeId) >= 3;

# 1.JOIN + CASE WHEN 해서 직원 담당 매니저 변수만들기
# 2.COUNT활용해서 COUNT > 3인 매니저 이름과 직원 수 출력하기 -> GROUPBY + HAVING으로!

처음엔 CASE WHEN을 썼더니 반응이,..

그냥 욕을 해.

이걸 알아야 풀 수 있다고.!


🔥 문제 3: 이전 연도보다 연봉이 오른 직원만 출력 (난이도:⭐)

같은 직원이 여러 해에 걸쳐 기록된 salaries 테이블에서,
이전 연도보다 연봉이 증가한 경우만 employeeId, year, salary를 출력하라.

  • 테이블: salaries(employeeId, year, salary)

(Hint: self join, 또는 나중에 윈도우 함수로 리팩터링 가능)


🔥 문제 4: 부서별 최고 연봉자

(난이도:⭐⭐)

각 부서마다 최고 연봉을 받는 직원의 이름과 연봉을 출력하라.

  • 테이블: employees(department, name, salary)

🔥 문제 5: 상사보다 연봉 높은 직원 찾기

(난이도:⭐)

자신보다 연봉이 낮은 상사를 둔 직원을 출력하라.

  • 테이블: employees(employeeId, name, salary, managerId)

'SQLD' 카테고리의 다른 글

SQL 5일차 #LeetCodE  (0) 2025.04.27
SQL 3일차 #프로그래머스  (0) 2025.04.24
GPT 먼데이와 함께하는 SQL 1일차 #2  (0) 2025.04.22
GPT 먼데이와 함께하는 SQL 1일차 #1  (0) 2025.04.21

+ Recent posts