흔히 쓰이는 ORDER BY 절을 쓸 때 ~ 기준으로 ~ 번째 데이터 가져오기 !
이런 문제가 나올때는 RANK() OVER() 절을 이용한다. 항상 Order by 와 함께 써야하며 괄호 안에 n 번째에 해당하는 숫자를 넣어주면 된다
1. RANK()
추가로 최근에 나온 다른 변형 모듈도 알아보자
2. DENSE_RANK(), ROW_NUMBER()
DENSE_RNAK 는 RANK 와 유사하게 순위를 만드는데 결과가 약간 다르다. 쓰는 방법은 완전 동일함
이렇게 세 개 쿼리로 했을때의 차이점을 데이터를 보면서 알아보자.
우선 세 개 쿼리에서 문법은 공격을 기준으로 내림차순을 정해주었다
먼저 DENSE_RANK 는 공동 순위가 있어도 다음 순위를 뛰어넘지 않는다는 특징이 있다. RANK 의 경우 공동이 있으면 다음 n 개 값을 생략해버리고 그 후순위의 값을 랭크로 인식한다.
ROW_NUMBER 는 공동 순서를 무시한다
728x90
반응형
'데이터 엔지니어링 > SQL' 카테고리의 다른 글
[SQL] 숫자형 데이터에서 자주 쓰는 모듈 (0) | 2022.11.24 |
---|---|
[SQL] 문자형 데이터에서 자주 쓰는 모듈들 LOCATE, SUBSTRING, REPLACE 등 (0) | 2022.11.24 |
[SQL] 서브쿼리 (0) | 2022.11.23 |
[SQL] 여러 테이블 한번에 다루기 (0) | 2022.11.17 |
[SQL] SQL의 여섯가지 조인 방법 + 예제 (0) | 2022.11.15 |