본문 바로가기
Programming/SQL

ROW_NUMBER() 사용 방법 - 순위를 매겨보자

by 제타 2018. 5. 18.
반응형

MSSQL에서 ROW_NUMBER() 함수는 ROW에 번호를 붙이는 함수이다.

이 함수는 PARTITION BY를 활용하면 사용 방안이 무궁무진하다

GROUP BY와 같은 기능이며 디멘젼을 잘 넣어사용하면 큰 힘을 발휘하는 함수라고 볼 수 있다.


ROW_NUMBER()를 활용해서 순위를 매겨보도록 하겠다.


참고로 순위를 매기는 함수는 RANK()함수가 별도로 있다.



CREATE TABLE score_tbl( seq INT, name VARCHAR(30), score INT )


GO


INSERT INTO score_tbl(seq, name, score) VALUES ( 1, '호날두', 11 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 2, '메시', 20 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 3, '파브레가스', 28 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 4, '피구', 19 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 5, '알베스', 29 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 6, '페페', 53 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 7, '아자르', 59 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 8, '제코', 97 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 9, '이니에스타', 89 )

INSERT INTO score_tbl(seq, name, score) VALUES ( 10, '사비', 49 )



-- 그룹을 짓지 않고 전체에서 score에 따른 순위 매기기

SELECT seq, team_cd, name, score, ROW_NUMBER() OVER (ORDER BY score DESC) AS '등수' FROM score_tbl

-- 팀 별로 그룹을 지어서 score에 따른 순위 매기기

SELECT seq, team_cd, name, score, ROW_NUMBER() OVER (PARTITION BY TEAM_CD ORDER BY score DESC) AS '등수' FROM score_tbl



반응형