Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

FIRST

문법

MAIN

first::=
Description of first.gif follows

그림 설명

목적

MAIN

FIRST LAST는 매우 유사한 함수이다. FIRST와 last함수는 주어진 소트 지정에 대해서 FIRST 또는 LAST로서 순위를 주어서 행의 세트로부터 값의 세트에 운영하는 집계와 분석 함수이다. 만약 단지 하나의 행이 FIRST 또는 LAST로서 순위를 지정하면, 집계 함수는 하나의 요소를 가지고 세트를 운영한다.

이 함수는 임수로써 임의 수치형 데이터 타입 또는 수치형 데이터로 암묵적으로 변환가능한 비수치형 데이터형을 취한다. 이 함수는 인수의 수치형과 같은 데이터형을 반환한다.

소트된 그룹의 첫번째 또는 마지막 행의 값이 필요하고, 그 값이 소트 키가 아닌경우에는, FIRST와 LAST함수는 self join 또는 VIEW에 대한 필요성을 배제하고, 더 좋은 퍼포먼스를 낸다.

OVER 구문을 지정함에 의해서 분석 함수로써 FIRST와 LAST함수를 이용할수 있다. query_partitioning_clause는 이 함수를 가지는 OVER구문의 일부로 유효하다.

 

예제

MAIN

집계 예제

다음 예제는 샘플 테이블 hr.employees의 각 부분에서 가장 적은 수수료를 가지는 종업원 사이에서 최저 급여와 가장 많은 수수료를 가지는 종업원 사이에서 최고 급여를 반환한다.

SELECT department_id,
       MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) "Worst",
       MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) "Best"
FROM employees
GROUP BY department_id;

DEPARTMENT_ID      Worst       Best
------------- ---------- ----------
           10       4400       4400
           20       6000      13000
           30       2500      11000
           40       6500       6500
           50       2100       8200
           60       4200       9000
           70      10000      10000
           80       6100      14000
           90      17000      24000
          100       6900      12000
          110       8300      12000
                    7000       7000

분석 예제

다음 예제는 이전 예제와 같은 계산을 하지만, 해당 부서의 각 종업원에 대한 결과를 반환한다.

SELECT last_name, department_id, salary,
   MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Worst",
   MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Best"
    FROM employees
    ORDER BY department_id, salary;

LAST_NAME           DEPARTMENT_ID     SALARY      Worst       Best
------------------- ------------- ---------- ---------- ----------
Whalen                         10       4400       4400       4400
Fay                            20       6000       6000      13000
Hartstein                      20      13000       6000      13000
. . .
Gietz                         110       8300       8300      12000
Higgins                       110      12000       8300      12000
Grant                                   7000       7000       7000