OracleのLAG関数の使い方は何ですか?
LAG関数は、Oracle SQLで使用されるウィンドウ関数であり、現在の行よりも前の指定された行数の値を取得するために使用されます。
基本の文法は次のとおりです:
LAG (expr, offset, default) OVER (PARTITION BY partition_col ORDER BY order_col)
- 列または式から値を取得する必要がある。
- offset: 指定した行からの行数を取得する。負の数を指定した場合、現在の行より後の行を取得する。
- もし対応する値が見つからない場合は、デフォルト値を返す。
- PARTITION BY: データをパーティション分けするためのオプションです。
- 列を指定してソートする際に使用するORDER BY:
たとえば、employeesというテーブルがあり、employee_id、last_name、hire_date、salaryというフィールドを含んでいるとします。各従業員の入社日と前回の昇給日を取得したい場合、LAG関数を使用することができます。
SELECT employee_id, last_name, hire_date, salary,
LAG(hire_date, 1, NULL) OVER (ORDER BY hire_date) AS prev_hire_date,
LAG(salary, 1, NULL) OVER (ORDER BY hire_date) AS prev_salary
FROM employees;
各従業員の入社日と最終昇給日を返します。