SQL 코딩테스트 복기 - 무조건 나오는 RANK함수 무조건 외우기

1. 복기

 

rank() over()만 외우다 보니까 자꾸 에러가 나서

 

rank(over())을 할까 rank(<column>) over()을 할까... 아무리 해도 에러가 난다

 

rank() over(order by ~)를 외웠다면... 그냥 거저먹는 문제인데 너무 아쉽다

 

 

2. rank 함수 형태

 

rank() over()만 외우는게 아니라 rank() over(order by <정렬 기준>)까지 정확히 외울것

 

 

3. rank 함수 종류

 

rank() over(order by~)

dense_rank() over(order by~)

row_number() over(order by~)

 

 

rank() over(order by~)는 동일한 값은 동일 순위를 부여하는데 그 다음 순위는 그 개수만큼 건너 뛰고 순위를 부여

 

 

위와 같이 1,2,2 다음에 3이 아니라 4를 부여함

 

반면 dense_rank() over(order by ~)는 동일한 값은 중복 순위를 부여하지만 그 다음 순위는 그대로 순차적으로 부여함

 

 

1,2,2 다음 순위에 4가 아니라 3을 부여함

 

마지막으로 row_number() over(order by~)는 중복 순위에 관계없이 그냥 순서대로 순위를 부여함

 

 

위와 같이 중복된 값 3000 3000에도 순위가 1,2,3,4,5,6,... 순차적으로 부여된다

 

 

참고

 

https://m.blog.naver.com/gglee0127/221318160003

 

[Oracle] 순위를 반환하는 함수 (RANK, DENSE_RANK, ROW_NUMBER)

테이블에서 특정 값을 기준으로 순위를 매겨서 보고 싶을 때 ORDER BY 절을 사용합니다. 동일한 점...

blog.naver.com

 

TAGS.

Comments