본문 바로가기
Oracle/View

데이터 베이스_ 오라클 VIEW [view 종류, 관리] 페이징 처리 기법 2

by Super Santj 2019. 7. 2.

**** 다른곳의 자료를 복사해왔다. ****

페이징 처리
SELECT * FROM
(
    필드를 출력하되 앞에 번호를 매기면서 출력하라
    SELECT ROWNUM AS RNUM, GET.* FROM 

    (             

+ query + (이곳에 데이터를 불러오는 쿼리문이 들어간다.)

    ) GET(테이블의 별칭)

   ORDER BY ROWNUM desc

)

WHERE RNUM BETWEEN 1 AND 10 ORDER BY RNUM ASC;

페이징 처리를 하기 위해선 전체 줄 수도 알아야 하기 때문에, 그를 알기위한 쿼리문

SELECT COUNT(*) CNT FROM ( + query + ) 
출처: http://notpeelbean.tistory.com/36 [Storm Of Two Yellow Beans]

 

문제_

emp테이블에서 가장 최근에 입사한 5명의 사원의 이름과 입사일을 출력
  하시오.                    =============TOP-N(화면에 출력할 갯수)

공식)

 select rownum "별칭명",필드명,,,테이블 별칭.*
 from  (
         select 필드명,,,
         from 테이블명
         order by top-N 필드명(정렬이 되는 필드명) desc (가장 최근)
) 별칭명
where 조건식(rownum <=top-N)에 맞는값을 부여

SQL> ed
file afiedt.buf(이)가 기록되었습니다

  1* select rownum empno,ename from emp
SQL> /

     EMPNO ENAME
---------- ----------
         1 SMITH
         2 ALLEN
         3 WARD
         4 JONES
         5 MARTIN
         6 BLAKE
         7 CLARK
         8 SCOTT
         9 KING
        10 TURNER
        11 ADAMS

     EMPNO ENAME
---------- ----------
        12 JAMES
        13 FORD
        14 MILLER

14 개의 행이 선택되었습니다.

SQL> select rownum "num",ename,hiredate
  2  from(select ename,hiredate from emp order by hiredate desc)
  3  where rownum <=#
num의 값을 입력하십시오: 5
구   3: where rownum <=&num
신   3: where rownum <=5

       num ENAME      HIREDATE
---------- ---------- --------
         1 ADAMS      87/05/23
         2 SCOTT      87/04/19
         3 MILLER     82/01/23
         4 JAMES      81/12/03
         5 FORD       81/12/03

댓글