Microsoft SQL Server
순위 기능
수색…
통사론
- DENSE_RANK () OVER ([<partition_by_clause>] <order_by_clause>)
- RANK () OVER ([partition_by_clause] order_by_clause)
매개 변수
인수 | 세부 |
---|---|
<partition_by_clause> | FROM 절에 의해 생성 된 결과 집합을 DENSE_RANK 함수가 적용된 분할로 나눕니다. PARTITION BY 구문은 OVER 절 (Transact-SQL)을 참조하십시오. |
<order_by_clause> | DENSE_RANK 함수가 파티션의 행에 적용되는 순서를 결정합니다. |
OVER ( [ partition_by_clause ] order_by_clause) | partition_by_clause 는 FROM 절에 의해 생성 된 결과 집합을 함수가 적용되는 partition_by_clause 으로 나눕니다. 지정하지 않으면 함수는 조회 결과 세트의 모든 행을 단일 그룹으로 취급합니다. order_by_clause는 함수가 적용되기 전에 데이터의 순서를 결정합니다. order_by_clause가 필요합니다. OVER 절의 <rows or range clause> 은 RANK 함수에 대해 지정 될 수 없습니다. 자세한 내용은 OVER 절 (Transact-SQL)을 참조하십시오. |
비고
두 개 이상의 행이 동일한 파티션의 순위에 대해 연결되면 각 묶인 행은 동일한 순위를받습니다. 예를 들어, 두 명의 최고 영업 사원이 동일한 SalesYTD 값을 갖고 있으면 둘 다 하나의 순위가 매겨집니다. 그 다음으로 높은 SalesYTD를 가진 영업 사원은 2 위입니다. 이것은이 행 앞에 오는 별개의 행 수보다 하나 많은 것입니다. 따라서 DENSE_RANK
함수에 의해 반환 된 숫자는 간격이없고 항상 연속적인 순위를가집니다.
전체 쿼리에 사용되는 정렬 순서에 따라 행이 결과에 나타나는 순서가 결정됩니다. 이는 1 위를 차지한 행이 파티션의 첫 번째 행 일 필요는 없음을 의미합니다.
DENSE_RANK
는 비 결정적입니다. 자세한 내용은 결정 성 및 비 결정적 함수를 참조 하십시오 .
계급()
A RANK () 분할 된 열의 결과 집합에있는 각 행의 순위를 반환합니다.
예 :
Select Studentid,Name,Subject,Marks,
RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name,subject
Studentid Name Subject Marks Rank
101 Ivan Maths 70 2
101 Ivan Science 80 1
101 Ivan Social 60 3
102 Ryan Maths 60 2
102 Ryan Science 50 3
102 Ryan Social 70 1
103 Tanvi Maths 90 1
103 Tanvi Science 90 1
103 Tanvi Social 80 3
DENSE_RANK ()
RANK ()와 동일합니다. 간격없이 순위를 반환합니다.
Select Studentid, Name,Subject,Marks,
DENSE_RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name
Studentid Name Subject Marks Rank
101 Ivan Science 80 1
101 Ivan Maths 70 2
101 Ivan Social 60 3
102 Ryan Social 70 1
102 Ryan Maths 60 2
102 Ryan Science 50 3
103 Tanvi Maths 90 1
103 Tanvi Science 90 1
103 Tanvi Social 80 2
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow