데이터 엔지니어링/SQL
[SQL] 데이터 줄세우기 RANK, DENSE_RANK, ROW_NUMBER
허니비 honeybee
2022. 11. 24. 16:20
흔히 쓰이는 ORDER BY 절을 쓸 때 ~ 기준으로 ~ 번째 데이터 가져오기 !
이런 문제가 나올때는 RANK() OVER() 절을 이용한다. 항상 Order by 와 함께 써야하며 괄호 안에 n 번째에 해당하는 숫자를 넣어주면 된다
1. RANK()
추가로 최근에 나온 다른 변형 모듈도 알아보자
2. DENSE_RANK(), ROW_NUMBER()
DENSE_RNAK 는 RANK 와 유사하게 순위를 만드는데 결과가 약간 다르다. 쓰는 방법은 완전 동일함
이렇게 세 개 쿼리로 했을때의 차이점을 데이터를 보면서 알아보자.
우선 세 개 쿼리에서 문법은 공격을 기준으로 내림차순을 정해주었다
먼저 DENSE_RANK 는 공동 순위가 있어도 다음 순위를 뛰어넘지 않는다는 특징이 있다. RANK 의 경우 공동이 있으면 다음 n 개 값을 생략해버리고 그 후순위의 값을 랭크로 인식한다.
ROW_NUMBER 는 공동 순서를 무시한다
728x90