FIRST
構文
first::=
関連項目:
ORDER
BY
句およびOVER
句の構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
FIRST
ファンクションとLAST
ファンクションは類似しています。両方のファンクションとも、与えられたソート指定に対して、FIRST
またはLAST
としてランク付けされた一連の行の一連の値を操作する集計ファンクションおよび分析ファンクションです。1つの行のみがFIRST
またはLAST
としてランク付けされている場合、集計は、1つの要素のみを持つセットを操作します。
OVER
句を省略すると、FIRST
ファンクションおよびLAST
ファンクションは集計ファンクションとして処理されます。OVER
句を指定すると、これらのファンクションを分析ファンクションとして使用できます。OVER
句のうち、query_partition_clause
の部分のみがこれらのファンクションで有効です。OVER
句を指定してquery_partition_clause
を省略すると、このファンクションは分析ファンクションとして処理されますが、分析対象のウィンドウは表全体になります。
これらのファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。また、引数の数値データ型と同じデータ型を返します。
ソートされたグループの最初または最後の行の値が必要であり、その値がソート・キーでない場合、FIRST
およびLAST
ファンクションは、自己結合またはビューの必要性を排除し、パフォーマンスを向上させます。
-
aggregate_function
引数は、MIN
、MAX
、SUM
、AVG
、COUNT
、VARIANCE
またはSTDDEV
ファンクションのいずれかです。FIRST
またはLAST
のいずれかにランク付けされた行の値を操作します。1つの行のみがFIRST
またはLAST
としてランク付けされている場合、集計は、単一(集計ではない)のセットを操作します。 -
KEEP
キーワードはセマンティクスを明確にするためのものです。これはaggregate_function
を修飾し、戻されるaggregate_function
の値がFIRST
またはLAST
のみであることを示します。 -
DENSE_RANK
FIRST
またはDENSE_RANK
LAST
は、最小(FIRST
)または最大(LAST
)稠密ランク(「オリンピック・ランク」)を持つ行のみを集計することを示します。
集計の例
次の例では、サンプル表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 ORDER 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 12008 110 8300 12008 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; 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 12008 Higgins 110 12008 8300 12008 Grant 7000 7000 7000