SQL Server 에서 rownumber 페이지 조회 의 용법 상세 설명

ROW_NUMBER()함 수 는 SELECT 문 구 를 되 돌려 주 는 줄 마다 1 부터 번 호 를 매 겨 연속 적 인 번 호 를 부여 합 니 다.검색 할 때 정렬 기준 을 적용 한 후 번 호 를 통 해서 만 순서 가 일치 하 는 것 을 보증 할 수 있 습 니 다.ROW 를 사용 하면NUMBER 함수 일 때 도 번 호 를 매 길 수 있 도록 미리 정렬 하 는 열 이 필요 합 니 다.
ROW_NUMBER()
설명:결과 집합 구역 내 줄 의 시리 얼 번 호 를 되 돌려 주 고 각 구역 의 첫 줄 은 1 부터 시작 합 니 다.
ROWNUMBER () OVER ([ ] ) 。
비고:ORDER BY 자 구 는 특정 구역 에서 행 분배 의 유일한 ROW 를 확정 할 수 있 습 니 다.NUMBER 의 순서.
파라미터::FROM 자구 생 성 결과 집합 에 ROW 적용NUMBER 함수 의 파 티 션 입 니 다.
:ROW 를NUMBER 값 을 파 티 션 의 줄 에 할당 하 는 순서 입 니 다.
반환 형식:bigint.
ROW_NUMBER()에서 자주 사용 하 는 몇 가지 상황
1.row 사용number()함수 가 번 호 를 매 긴 다.예 를 들 어

select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Customer

원리:먼저 psd 에 따라 정렬 하고 정렬 한 후에 모든 데이터 에 번 호 를 매 긴 다.
2.주문서 에서 가격 의 오름차 순 으로 정렬 하고 각 기록 에 정렬 코드 는 다음 과 같다.

select DID,customerID,totalPrice,ROW_NUMBER() over(order by totalPrice) as rows from OP_Order

3.각 가구 의 모든 주문 서 를 통계 하고 각 고객 이 내 린 주문 금액 에 따라 순 서 를 올 리 며 모든 고객 의 주문 에 번 호 를 매 긴 다.이렇게 하면 모든 고객 이 몇 건 을 내 릴 지 알 수 있다.
그림:
코드 는 다음 과 같 습 니 다:

select ROW_NUMBER() over(partition by customerID order by totalPrice) as rows,customerID,totalPrice, DID from OP_Order

4.모든 고객 이 최근 에 내 린 주문 서 를 통계 하 는 것 은 몇 번 째 주문 이다.
코드 는 다음 과 같 습 니 다:

with tabs as 
( 
select ROW_NUMBER() over(partition by customerID order by totalPrice) as rows,customerID,totalPrice, DID from OP_Order 
 ) 
select MAX(rows) as '    ',customerID from tabs group by customerID
5.모든 고객 의 모든 주문 에서 구 매 한 금액 이 가장 적 고 주문 을 바 꾸 는 과정 에서 고객 은 몇 번 째 로 구 매 한 것 으로 집계 한다.
그림:
위의 그림:rows 는 고객 이 몇 번 째 구 매 를 하 는 지 나타 낸다.
사고방식:임시 표를 이용 하여 이 조작 을 집행 한다.
1.먼저 고객 에 따라 그룹 을 나 눈 다음 에 고객 의 주문 시간 에 따라 순 서 를 매기 고 번 호 를 매 긴 다.
2.그리고 하위 조 회 를 이용 하여 모든 고객 이 구 매 할 때의 최소 가격 을 찾 습 니 다.
3.모든 고객 의 최소 가격 을 찾 아 해당 하 는 기록 을 찾는다.
코드 는 다음 과 같 습 니 다:

with tabs as 
 ( 
select ROW_NUMBER() over(partition by customerID order by insDT) as rows,customerID,totalPrice, DID from OP_Order 
) 
 select * from tabs 
where totalPrice in 
( 
select MIN(totalPrice)from tabs group by customerID 
 )
6.고객 이 처음으로 내 린 주문 서 를 선별한다.
사고의 방향.rows=1 을 이용 하여 고객 이 처음으로 내 린 주문 기록 을 조회 합 니 다.
코드 는 다음 과 같 습 니 다:

with tabs as 
( 
select ROW_NUMBER() over(partition by customerID order by insDT) as rows,* from OP_Order 
) 
select * from tabs where rows = 1 
select * from OP_Order
7.rows_number()는 페이지 를 나 누 는 데 사용 할 수 있 습 니 다.
사고방식:먼저 모든 제품 을 선별 한 다음 에 이 제품 들 에 대해 번 호 를 매 긴 다.그리고 where 자구 에서 여과 합 니 다.
실례

--      

create proc usp_GetMyPhotos
 @pageIndex int, --    
 @pageSize int, --     
 @pageCount int output --        
as
 declare @count int --     
 select @count =COUNT(*) from Photos
 set @pageCount = CEILING( @count*1.0/@pageSize)
 select * from
(select *,ROW_NUMBER() over(order by pid desc) as num
from Photos) as t
where num between @pageSize*(@pageIndex-1) + 1 and @pageSize*@pageIndex
8.over 등 함 수 를 사용 할 때 over 안의 그룹 과 정렬 은'where,group by,orderby'보다 늦게 실 행 됩 니 다.
코드:

select 
ROW_NUMBER() over(partition by customerID order by insDT) as rows, 
customerID,totalPrice, DID 
from OP_Order where insDT>'2011-07-22'
상기 코드 는 where 자 구 를 먼저 실행 하고 실행 한 후에 모든 기록 에 번 호 를 매 긴 다.
SQL Server 의 rownumber 의 용법 에 대한 상세 한 글 은 여기까지 입 니 다.SQL Server 에서 rownumber 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기