カテゴリ:

ウィンドウ関数 (ランク関連、ウィンドウフレーム)

FIRST_VALUE

値が順序付けられたグループ内の最初の値を返します。

こちらもご参照ください。

LAST_VALUENTH_VALUE

構文

FIRST_VALUE( <expr> ) [ { IGNORE | RESPECT } NULLS ]
                      OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2>  [ { ASC | DESC } ] [ <window_frame> ] )

ウィンドウフレーム 構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。

使用上の注意

  • 他のシステムでのこの関数の実装との互換性のために、関数の引数で { IGNORE | RESPECT } NULLS を指定することもできます。

    FIRST_VALUE( <式> [ { IGNORE | RESPECT } NULLS ] ) OVER ...

  • { IGNORE | RESPECT } NULLS が指定されていない場合、デフォルトは RESPECT NULLS です(つまり、式にNULL値が含まれ、それが式の最初の値である場合、NULL値が返されます)。

  • FIRST_VALUEはランク関連の関数であるため、次の要素で構成されるウィンドウを指定する必要があります。

    • PARTITION BY <式1> 副次句(オプション)。

    • オプションの ウィンドウフレーム 付き、 ORDER BY <式2> 副次句(必須)。サポートされている追加の順序付けオプション(並べ替え順序、NULL値の順序付けなど)の詳細については、 ORDER BY クエリ構成をご参照ください。

  • オプションの ウィンドウフレーム (累積またはスライド)は、関数が計算されるウィンドウ内の行のサブセットを指定します。 ウィンドウフレーム が指定されていない場合、デフォルトはウィンドウ全体です。

    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

    これは、ウィンドウフレームに次のデフォルトを指定するANSI標準とは異なります。

    RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

    構文や例を含むウィンドウフレームの詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。

  • FIRST_VALUE 句の ORDER BY は、 FIRST_VALUE 句の行の順序にのみ影響します。クエリ全体の結果の順序は制御されません。

これは、 FIRST_VALUE() を使用した簡単なクエリを示しています。このクエリには、2つの ORDER BY サブ句が含まれています。1つは各パーティションの行の順序を制御し、もう1つは完全なクエリの出力の順序を制御します。

SELECT
        column1,
        column2,
        FIRST_VALUE(column2) OVER (PARTITION BY column1 ORDER BY column2 NULLS LAST) AS column2_first
    FROM VALUES
       (1, 10), (1, 11), (1, null), (1, 12),
       (2, 20), (2, 21), (2, 22)
    ORDER BY column1, column2;
+---------+---------+---------------+
| COLUMN1 | COLUMN2 | COLUMN2_FIRST |
|---------+---------+---------------|
|       1 |      10 |            10 |
|       1 |      11 |            10 |
|       1 |      12 |            10 |
|       1 |    NULL |            10 |
|       2 |      20 |            20 |
|       2 |      21 |            20 |
|       2 |      22 |            20 |
+---------+---------+---------------+