SW-PRODUCT/개발-데이터분석

PostgreSQL : row_number vs rank vs dense_rank

굴돌 2016. 11. 11. 14:02


row_number : 몇번째 줄인지를 알려줌.  10개의 row가 있으면 항상 1~10이 빠짐없이 부여된다.


rank : 동점이 있을 경우 같은 등수를 부여하고,  동점 갯수만큼 순위를 건너뛰어 부여한다.  즉,  2등이 동점일 경우 2등이 둘,  3등 없고,  4등부터 부여된다.


dense_rank : 동점이 있을 경우 같은 등수를 부여하고,  차순위자에게 바로 +1한 등수를 부여한다.  즉,  2등이 동점일 경우 2등이 둘이고 차상위자가 3등이 된다.


https://blog.jooq.org/2013/10/09/sql-trick-row_number-is-to-select-what-dense_rank-is-to-select-distinct/


PostgreSQL의 Window Function : https://www.postgresql.org/docs/9.3/static/functions-window.html