인 스 턴 스 설명 sql server 랭 킹 함수 DENSERANK 의 용법

수요
이전에 sql server 의 순위 함수 가 가장 많이 사 용 된 것 은 RoW 일 것 입 니 다.NUMBER()입 니 다.저 는 보통 ROW 를 사용 합 니 다.NUMBER()+CTE 로 페이지 나 누 기;오늘 정원 을 둘 러 보 니 다른 내장 순위 함수 가 괜 찮 은 것 을 보 았 습 니 다.자신 이 원 하 는 것 도 생각 했 습 니 다.여러분 은 1 분 동안 어떻게 실현 하고 싶 은 지 먼저 생각 할 수 있 습 니 다.
수 요 는 간단 하 다.성적 상위 5 명의 학생 정 보 를 구한다.
예 를 들 면:
  
성적 이 병렬 될 수 있 기 때문에 5 등 안에 여러 개가 있 을 수 있 습 니 다.예 를 들 면:
    
테스트 데이터:

declare @t table
(ID int,
 StudentName nvarchar(15),
 Score int)
 
insert into @t
select 1,'  ',99 union all
select 2,'  ',99 union all
select 3,'  ',99 union all
select 4,'  ',98 union all
select 5,'  ',97 union all
select 6,'  ',96 union all
select 7,'  ',95 union all
select 8,'  ',94 union all
select 9,'  ',93 union all
select 10,'  ',92 
2.스스로 실현
내 생각:병렬 가 가능 하 다 면 DISTINCT 로 5 위 권 성적 을 찾 아 보 자.ok,코드 는 다음 과 같 습 니 다.

select t1.* from @t t1
join(select distinct top 5 Score from @t order by Score desc) t2
on t1.Score = t2.Score    
위 에서 요구 한 결과 와 는 다른 것 같 습 니 다.정렬 이 적 습 니 다.물론 우 리 는 프로그램 에서 처리 할 수 있 습 니 다.이것 은 문제 가 아 닙 니 다.
3.내 장 된 랭 킹 함수 DENSE 사용RANK
사실 sql server 에 이러한 함수 가 내장 되 어 있어 서 쉽게 실현 할 수 있 습 니 다.ok,코드 를 직접 올 릴 수 있 습 니 다.

;with cte as(
  select dense_rank() over(order by Score desc) rank,* from @t
)
select * from cte where rank < 6   
 4.확장,내장 순위 함수 RANK
DENSE 와RANK 와 비슷 하 게 RANK 함수 가 하나 더 있 지만 RANK 함 수 는 순서대로 순 위 를 매기 지 않 고 번호 에 따라 배열 된다.약간 돌아 서 위의 함 수 를 RANK()로 바 꾸 면 알 수 있 습 니 다.얻 은 결 과 는 다음 과 같 습 니 다.
  
이상 sql server 랭 킹 함수 DENSERANK 의 사용법 은 여러분 의 학습 에 영감 을 주 고자 자신의 생각 을 공유 했다.

좋은 웹페이지 즐겨찾기