250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- leetcode문풀
- sql문풀
- 서브쿼리
- 활성사용자수
- 데벨챌
- SQL고득점KIT
- 프로그래머스
- 코테준비
- with절
- 파이썬문풀
- sql50
- 데이터리안넥스트레벨챌린지
- 데이터리안
- 데이터리안실전반
- levle1
- 티스토리챌린지
- 문풀
- 위키독스
- 파이썬
- 그로스해킹
- leetcode
- 오블완
- SQL테스트
- SQL
- 윈도우함수
- 프로그래머스문풀
- mysql
- 약수구하기
- 셀프조인
- join
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[Leetcode:SQL] 부서별로 top3 급여 조회하기 본문
728x90
출처[Leetcode] : https://leetcode.com/problems/department-top-three-salaries/description/
문제: 부서별 급여 top3의 직원이름과 급여를 조회(동일 급여로 순위 중복이 발생하는 것을 포함)
DENSE_RANK + PARTITION BY
- WITH 절 (top3_salary)
- DENSE_RANK() 윈도우 함수를 사용하여 departmentID별로 급여(salary)가 높은 순서대로 순위 지정
- 같은 급여를 받는 경우 동일한 순위를 부여
- INNER JOIN
- Employee 테이블(s)과 Department 테이블(d)을 departmentID = id 조건으로 조인하여 부서명을 가져오기
- 최종 SELECT
- 부서명(Department), 직원명(Employee), 급여(salary)를 출력
- WHERE s.top3 <= 3 조건을 사용해 각 부서별 급여 상위 3명까지만 필터링
WITH top3_salary AS(
SELECT name
,salary
,departmentID
,DENSE_RANK() OVER(PARTITION BY departmentID ORDER BY salary DESC) AS top3
FROM Employee
)
SELECT d.name AS Department
,s.name AS Employee
,s.salary
FROM top3_salary AS s
INNER JOIN Department AS d
ON s.departmentID = d.id
WHERE s.top3 <= 3
728x90
'SQL > SQL문풀' 카테고리의 다른 글
[SQL] SQL로 리텐션 구하는 방법(클래식, 롤링, 범위) (0) | 2025.02.08 |
---|---|
[데이터리안] SQL로 리텐션 구하는 방법(클래식, 롤링 리텐션) (0) | 2025.02.08 |
[해커랭크: SQL] SQL로 피봇하기 (0) | 2025.02.07 |
[프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기 (0) | 2025.02.06 |
[MY SQL] 영화를 가장 많이 본 사람과 평점이 가장 높은 영화 찾기 (0) | 2025.02.05 |