기본 콘텐츠로 건너뛰기

라벨이 Rank인 게시물 표시

[SQL Server] Rank() 함수로 배열을 쉽게..

MS-SQL Server 2005부터 서포트 합니다. 온라인 게임의 통계등에 많이 사용하는 순위나 랭킹 서비스에 많이 활용하는 함수입니다. USE AdventureWorks; GO SELECT i.ProductID, p.Name, i.LocationID, i.Quantity     ,RANK() OVER       (PARTITION BY i.LocationID ORDER BY i.Quantity DESC) AS 'RANK' FROM Production.ProductInventory i       INNER JOIN Production.Product p           ON i.ProductID = p.ProductID ORDER BY p.Name; GO 여기서 위의 예제처럼 Partition By 로 필드를 구분 지으면 지역별(i.LocationID)로 랭킹을 나눈다는 뜻이다. 서울, 부산의 두 지역이 있으면 서울에서의 랭킹과 부산에서의 랭킹이 서로 다르게 나타난다. Parition 뒤의 Order By 는 Rank를 순서짓는 순서가 된다.   즉, 온라인 게임에서 많이 사용하는 캐릭터 테이블에서.. 서버별, 직업별로 높은 레벨, 높은 경험치, 신규 캐릭터 순으로 랭킹을 만들어보면.. 테이블 : tCharacter 서버 : servername 직업 : jobname 레벨 : level 경험치 : exppoint 생성일 : regdt select servername, jobname, level, exppoint, regdt   , rank() over       (partition by servername, jobname         order by level desc, exppoint desc, regdt desc) as Rank from tCharacter 이런식으로 구별지어 랭킹을 만들 수 있답니다. ^^ http://msdn.microsoft.com/ja-jp/library/ms176102.aspx