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
'Programming > SQL' 카테고리의 다른 글
ROW 펼치기 팁 - 쿼리로 행(세로)을 열(가로)로 펼치는 방법 (4) | 2018.05.25 |
---|---|
RANK(), DENSE_RANK(), NTILE() 함수 사용하기 (0) | 2018.05.19 |
데이터 정규화 (제 1차~5차 정규화) (0) | 2018.04.24 |
CREATE TABLE, ALTER TABLE ( 컬럼 추가,삭제,변경 등) 방법 (0) | 2018.04.22 |
CREATE DATABASE 데이터베이스 생성하기 (0) | 2018.04.22 |