오늘은 MS-SQL에서 순위를 구하는 방법을 알아보려고 합니다.
지난번에는 ROW_NUMBER 함수를 이용하여
행 일련번호를 가져왔었습니다.
순위를 구하는 것은 RANK 함수를 이용하면 됩니다.
사용 방법은 ROW_NUMBER과 똑같습니다.
그렇기 때문에 한번 더 말을 했던 것이고요.
결과도 거의 비슷하면서
약간 다릅니다.
예를 보여드리면서 하도록 하겠습니다.
우선, 이번에 순위를 구히기 위한 테스트용 데이터를 넣어볼께요.
임시테이블을 만들고,
그 안에 테스트용 데이터를 넣겠습니다.
CREATE TABLE #rank_tmp ( na VARCHAR(10) , are INT ) INSERT INTO #rank_tmp VALUES ('aaa', 20); INSERT INTO #rank_tmp VALUES ('bbb', 15); INSERT INTO #rank_tmp VALUES ('ccc', 30); INSERT INTO #rank_tmp VALUES ('ddd', 40); INSERT INTO #rank_tmp VALUES ('eee', 20); INSERT INTO #rank_tmp VALUES ('fff', 16); INSERT INTO #rank_tmp VALUES ('ggg', 26); INSERT INTO #rank_tmp VALUES ('hhh', 75); INSERT INTO #rank_tmp VALUES ('iii', 62); INSERT INTO #rank_tmp VALUES ('jjj', 61); INSERT INTO #rank_tmp VALUES ('kkk', 40); INSERT INTO #rank_tmp VALUES ('lll', 32); INSERT INTO #rank_tmp VALUES ('mmm', 32); INSERT INTO #rank_tmp VALUES ('nnn', 42); INSERT INTO #rank_tmp VALUES ('ooo', 51); SELECT * FROM #rank_tmp
위처럼 넣었습니다.
그러면 아래처럼 결과가 나오네요.
위에 넣은 것이 그대로 나오는 것이지요.
우선 비교를 위해 ROW_NUMBER 함수를 이용해서 출력해보도록 할께요.
쿼리는 다음과 같습니다.
SELECT ROW_NUMBER() OVER( ORDER BY are DESC ) , na , are FROM #rank_tmp
위처럼 작성을 하고 돌려보았습니다.
그랬더니 아래처럼 결과가 나옵니다.
제가 네모로 표시를 해 놓았습니다.
are는 동일한데도,
순차적으로 숫자가 나오다 보니
계속해서 증가되는 것을 볼 수 있습니다.
그러면 이번에는 RANK 함수를 이용하여
순위를 구해보도록 하겠습니다.
쿼리는 다음과 같습니다.
SELECT RANK() OVER( ORDER BY are DESC ) , na , are FROM #rank_tmp
위와 같이 쿼리를 작성하고 돌려보았습니다.
그랬더니 아래처럼 결과가 나왔습니다.
위 이미지를 보시면 아시겠지만,
are가 동일하면 순위도 동일한 것을 볼 수 있습니다.
ROW_NUMBER 함수를 이용했을 때는
일련번호이다 보니 계속해서 증가를 하였습니다.
그런데 RANK 함수를 이용하였을 때는
순위를 구하는 함수이다보니
동일할 때는 공동으로 나옵니다.
그래서 공동 6, 8, 12위가 되었습니다.
그리고 7, 9, 13위는 넘어가게되었습니다.
공동이다보니 해당 순위는 없는 것이지요.
이렇게 ROW_NUMBER 함수와 RANK 함수는 약간의 차이가 있습니다.
쿼리 자체는 크게 차이가 없지만
필요에 따라서 사용을 하시면 되실 것 같습니다.
이상으로 SQL SERVER에서 RANK함수를 이용하여 순위를 구하기였습니다.
그리고 RANK함수와 ROW_NUMBER 함수의 차이 정리였습니다~
'컴퓨터관련 > MS-SQL' 카테고리의 다른 글
[MS-SQL]데이터베이스 생성, 변경, 삭제하기 (0) | 2019.04.08 |
---|---|
[MS-SQL]sa(시스템)계정 로그인 및 DB접근 막기 (1) | 2019.04.05 |
[MS-SQL]트리거 확인하기 (0) | 2019.04.01 |
[MS-SQL]TOP에 변수 사용하여 데이터 가져오기 (0) | 2019.03.29 |
[MS-SQL]행 일련번호 가져오기 (0) | 2019.03.21 |