TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

[SQLD] 윈도우 함수 - ROW_NUMBER, PARTITION BY 예제 및 풀

by 기록자_Recordian 2024. 2. 27.
728x90
반응형

[윈도우 함수 관련 글]

 

SQLD 2과목 SQL 활용 - 윈도우 함수

서브쿼리 집합연산자 그룹 함수 윈도우 함수 TOP N 쿼리 계층형 질의와 셀프 조인 PIVOT 절과 UNPIVOT 절 정규 표현식 ※ 자료출처: 데이터 자격검정 협회 4. 윈도우 함수 A. 윈도우 함수(Window Function)

puppy-foot-it.tistory.com

 


예제1 및 풀이
출처: EPASSKOREA

 

Q. 추천내역 테이블에서 아래와 같은 SQL 문 수행 시 결과는?

 

[추천내역 테이블]

추천경로 추천인 피추천인 추천점수
SNS 나한일 강감찬 75
SNS 이순신 강감찬 90
이벤트 홍길동 강감찬 80
이벤트 정치인 이순신 78
홈페이지 정치인 허민 93
홈페이지 홍두깨 심청이 99

 

[SQL 문]

SELECT 추천경로, 추천인, 피추천인, 추천점수
FROM (SELECT 추천경로, 추천인, 피추천인, 추천점수
             ROW_NUMBER() OVER (PARTITION BY 추천경로
             ORDER BY 추천점수 DESC) AS RNUM
             FROM 추천내역)
WHERE RNUM = 1;

 

■ 풀이

ROW_NUMBER() : 번호를 매겨라
PARTITION BY 칼럼명: 해당 칼럼을 기준으로 나눠라
ORDER BY 칼럼명 DESC: 해당 칼럼을 내림차순 기준으로 정렬하라

▶ ROW_NUMBER() OVER (PARTITION BY 추천경로 ORDER BY 추천점수 DESC):
추천경로를 기준으로 나눠서 번호를 매긴 다음, 추천점수를 내림차순 기준으로 정렬하라.

 

ORDER BY 추천점수 DESC): 추천점수를 내림차순 기준으로 정렬하라.

WHERE RNUM = 1; RNUM 1 씩만 출력

■ 정답

추천경로 추천인 피추천인 추천점수
SNS 이순신 강감찬 90
이벤트 홍길동 강감찬 80
홈페이지 홍두깨 심청이 99

예제2 및 풀이
출처: SQL 자격검정 실전문제 (노랭이) P. 122 Q.117

 

Q. 다음 중 [사원] 테이블에 대하여 아래와 같은 SQL을 수행하였을 때 결과는?

 

[테이블: 사원]

사원ID 부서ID 사원명 연봉
001 100 홍길동 2500
002 100 강감찬 3000
003 200 김유신 4500
004 200 김선달 3000
005 200 유학생 2500
006 300 변사또 4500
007 300 박문수 3000

 

[SQL문]

SELECT Y.사원ID, Y.부서ID, Y.사원명, Y.연봉
FROM (SELECT 사원ID, MAX(연봉) OVER(PARTITION BY 부서ID) AS 최고연봉
             FROM 사원) X, 사원 Y
WHERE X.사원ID = Y.사원ID
AND X.최고연봉 = Y.연봉;

 

■ 풀이

FROM (SELECT 사원ID, MAX(연봉) OVER(PARTITION BY 부서ID) AS 최고연봉  FROM 사원) X

SELECT Y.사원ID, Y.부서ID, Y.사원명, Y.연봉
FROM (SELECT 사원ID, MAX(연봉) OVER(PARTITION BY 부서ID) AS 최고연봉 
            FROM 사원) X, 사원 Y
WHERE X.사원ID = Y.사원ID
AND X.최고연봉 = Y.연봉;

 

 

 

728x90
반응형

'자격증 > SQLD' 카테고리의 다른 글

[SQLD] PIVOT/UNPIVOT (보강-1)  (0) 2024.03.01
[SQLD] TOP N Query (보강)  (3) 2024.03.01
SQL 집계함수 - SUM  (0) 2024.02.26
SQLD 2과목 SQL 활용 - 서브쿼리 (보강)  (0) 2024.02.19
SQLD 2과목 SQL 활용 - 계층형 질의(보강)  (1) 2024.02.18