SQL 2005 ROW 활용NUMBER()OVER 페이지 기능 구현
2211 단어 ROW NUMBER()
2.실례 데이터 보기
데이터 초기 화
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
데이터 결과 표시
부서 별 그룹(deptid)에 따라 각 부서 의 임금(salary)등급 을 표시 합 니 다.
이것 은 얻 고자 하 는 결과 이다.두 번 째 열 은 부서 에 따라 조 를 나 누고,세 번 째 열 은 임금 이 높 은 것 에서 낮은 것 으로,rank 는 부서 내부 의 배열 을 한다.
3.간단하게 페이지 를 나 누 어 실현
SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee
위의 1,2 시 에 따 르 면 이 SQL 은 임금 인하 순서에 따라 순 위 를 매 긴 후에 도 PARTITION BY COLUMN 을 통 해 구역 을 나 누 지 않 았 고 rownumber()는 1 부터 각 그룹 기록 에 숫자 를 되 돌려 줍 니 다.결 과 는 다음 과 같다.
위 SQL 에서 되 돌아 온 결과 집합 을 데이터 시트 로 사용 합 니 다.
(SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee)as NewTable
만약 우리 가 페이지 당 5 개의 기록 을 가지 고 있다 면,
그러면 첫 페이지 에 select*from(SELECT)을 표시 합 니 다. Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 1 and 5
두 번 째 페이지 는 select*from(SELECT) Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 6 and 10
물론 우리 2 페이지 에는 4 개의 기록 만 있다.
페이지 를 나 누 는 것 도 이렇게 이 루어 졌 고,다 표 조회 에 대해 페이지 를 나 누 는 것 도 마찬가지다.