Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. # Rank Over 레코드를 ''특정 column의 값''을 기준으로 정렬하여 순서를 매길 수 있다. 만약 아래와 같은 테이블이 있다고 가정하자 ^ USERID ^ SCORE ^ | a | 10 | | b | 30 | | c | 50 | | d | 90 | | e | 80 | | f | 50 | | g | 20 | ### Rank() SCORE COLUMN을 기준으로 순서를 매기고 싶다면 다음과 같이 하면된다. <sxh sql> SELECT USERID, SCORE, RANK() OVER(ORDER BY SCORE DESC) RANK FROM TMP_TABLE; </sxh> ^ USERID ^ SCORE ^ RANK ^ | d | 90 | 1 | | e | 80 | 2 | | c | 50 | 3 | | f | 50 | ''3'' | | b | 30 | 4 | | g | 20 | 5 | | a | 10 | 6 | ### ROW_NUMBER() ROW_NUMBER() 함수를 사용하면 아래와 같다 <sxh sql> SELECT USERID, SCORE, ROW_NUMBER() OVER(ORDER BY SCORE DESC) RANK FROM TMP_TABLE; </sxh> ^ USERID ^ SCORE ^ RANK ^ | d | 90 | 1 | | e | 80 | 2 | | c | 50 | 3 | | f | 50 | ''4'' | | b | 30 | 5 | | g | 20 | 6 | | a | 10 | 7 | 위의 RANK()와 ROW_NUMBER()의 차이는 결과를 자세히 보면 알 수 있다. RANK()의 결과는 3, 4번째 레코드의 점수가 50점으로 동일하기 때문에 때문에 같은 순서인 2번을 매겼다. 하지만 ROW_NUMBER()의 결과는 점수가 같더라도 레코드가 달라지면 다른 순서를 매긴다. open/rank-over.txt Last modified: 2024/10/05 06:15by 127.0.0.1