Language(언어)/SQL
ROW_NUMBER()
은쥬라기
2021. 12. 12. 14:17
📌ROW_NUMBER()이란
PARTITION 결과의 행 일련번호를 반환하는 함수로 ORDER BY절에 의해 정렬된 순서를 기준으로 고유한 값을 반환한다.
📌ROW_NUMBER() 문법
ROW_NUMBER() OVER(PARTITION BY [그룹핑 컬럼] ORDER BY [정렬 컬럼])
- PARTITON BY는 선택사항, FROM 절이 생성한 결과에서 ROW_NUMBER가 적용되는 파티션으로 나누기
- ORDER BY는 필수사항, ROW_NUMBER 값이 행에 할당되는 순서 결정
EX) 특정 열을 기준으로 중복을 제거하고 싶을 경우 사용
이름 | 나이 |
김철수 | 34 |
박영희 | 23 |
쥬라기 | 28 |
김철수 | 50 |
김영철 | 48 |
이복희 | 33 |
정보테이블
Q) 정보테이블에서 이름으로 중복을 제거한 데이터를 가져오세요. (중복이 있을 경우 가장 나이가 많은 값을 가져온다.)
A)
SELECT TT.*
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY 이름 ORDER BY 나이 DESC) AS RK
FROM 정보테이블) TT
WHERE TT.RK = 1;
이름 | 나이 | RK |
김철수 | 50 | 1 |
박영희 | 23 | 1 |
쥬라기 | 28 | 1 |
김영철 | 48 | 1 |
이복희 | 33 | 1 |
TT 테이블