Pseudo Column (의사 결정 컬럼)

    • ROWNUM : Top-N 분석 시 사용
               1부터 시작
    • ROWID : 물리적 Row 주소값


* Top-N 분석 예제 :
employees 테이블에서 최상위 소득자 3명의 이름과 급여를 표시하시오.
HR> select ROWNUM as RANK, last_name, salary
  2  from (select last_name, salary from employees order by salary DESC)
  3  where ROWNUM <= 3;

      RANK LAST_NAME                     SALARY
---------- ------------------------- ----------
         1 Whalen                         25000
         2 King                           24000
         3 Kochhar                        17000


HR> select ROWNUM as RANK, last_name, hire_date
  2  from (select last_name, hire_date from employees order by hire_date DESC)
  3  where ROWNUM <= 5;

      RANK LAST_NAME                 HIRE_DATE
---------- ------------------------- ---------
         1 Zlotkey                   29-JAN-00
         2 Mourgos                   16-NOV-99
         3 Grant                     24-MAY-99
         4 Lorentz                   07-FEB-99
         5 Vargas                    09-JUL-98


* ROWID 예시 :


ROWID              EMPLOYEE_ID LAST_NAME

------------------ ----------- -------------------------

AAAETOAAEAAAAELAAL         149 Zlotkey

AAAETOAAEAAAAELAAM         174 Abel

AAAETOAAEAAAAELAAN         176 Taylor

AAAETOAAEAAAAELAAO         178 Grant

AAAETOAAEAAAAELAAP         200 Whalen

AAAETOAAEAAAAELAAQ         201 Hartstein

AAAETOAAEAAAAELAAR         202 Fay

AAAETOAAEAAAAELAAS         205 Higgins

AAAETOAAEAAAAELAAT         206 Gietz



※ 6 3 6 3으로 끊으면 된다.

AAAEY/   AAE   AAAAFb   AAT

  6       3       6      3

Object# Field# Block#  Row#



select min(rowid), employee_id, last_name

from t1

group by employee_id, last_name

order by 2;

※ group by절에는 group function을 제외한 나머지 컬럼이 반드시 들어가야 한다.




* 중복을 제거!


방법 1 :


delete from t1

where rowid not in (select(min(rowid) from t1

                    group by employee_id);



방법 2 : 별칭을 주어 rowid 최소값보다 큰 것들을 제거


delete from t1 a

where rowid > (select min(rowid) from t1 b

               where a.employee_id = b.employee_id);




* mission! 급여 상위 6 ~ 10위를 추출하라.



'스마트웹&콘텐츠 개발자 과정 > Oracle' 카테고리의 다른 글

Workshop II 남은 부분 수업  (0) 2018.07.24
admin 수업 마지막  (0) 2018.07.03
admin 수업  (0) 2018.06.22
Admin 수업 - 백업 실습  (0) 2018.06.21
admin  (0) 2018.06.20

+ Recent posts