LAST_VALUE ウィンドウ関数 - Amazon Redshift

LAST_VALUE ウィンドウ関数

順序付けられた行のセットを考慮し、LAST_VALUE 関数は、フレームの最後の行に関する式の値を返します。

フレームの最初の行を選択する方法については、「FIRST_VALUE ウィンドウ関数」を参照してください。

構文

LAST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

引数

expression

関数の対象となる列または式。

IGNORE NULLS

この関数は NULL ではないフレームの最後の値 (値がすべて NULL の場合は NULL) を返します。

RESPECT NULLS

Amazon Redshift は使用される行を決定するために null 値を含める必要があることを示します。IGNORE NULLS を指定しない場合、RESPECT NULLS はデフォルトでサポートされます。

OVER

関数にウィンドウ句を導入します。

PARTITION BY expr_list

1 つ以上の式で関数のウィンドウを定義します。

ORDER BY order_list

各パーティション内の行をソートします。PARTITION BY 句が指定されていない場合、ORDER BY はテーブル全体をソートします。ORDER BY 句を指定する場合、frame_clause も指定する必要があります。

結果は、データの並び順によって異なります。以下の場合、結果は不確定になります。

  • ORDER BY 句が指定されておらず、パーティションに式に使用する 2 つの異なる値が含まれる場合

  • 式が ORDER BY リストの同じ値に対応する異なる値を検証する場合。

frame_clause

ORDER BY 句が集計関数に使用される場合、明示的なフレーム句が必要です。フレーム句は順序付けた結果の行のセットを含めるか除外して、関数のウィンドウの行のセットを絞り込みます。フレーム句は ROWS キーワードおよび関連する指定子で構成されます。「ウィンドウ関数の構文の概要」を参照してください。

戻り型

これらの関数は、Amazon Redshift のプリミティブデータ型を使用する式をサポートします。戻り値の型はのデータ型と同じです。

次の例では、サンプル TICKIT データの VENUE テーブルを使用します。詳細については、「サンプルデータベース」を参照してください。

次の例は、収容能力によって順序付けられた結果 (高から低) で、VENUE テーブルの各会場の座席数を返します。LAST_VALUE 関数は、フレームの最後の行 (この場合、最小座席数の行) に対応する会場名を選択するために使用されます。結果は州によってパーティションで分割されるため、VENUESTATE 値が変更されると、新しい最後の値が選択されます。ウィンドウフレームはバインドされていないため、同じ最後の値が各パーティションの行ごとに選択されます。

カリフォルニアでは、Shoreline Amphitheatreの座席数が一番低い (22000) ため、この値がパーティションのすべての行に返されます。

select venuestate, venueseats, venuename, last_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | last_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Shoreline Amphitheatre CA | 69843 | Monster Park | Shoreline Amphitheatre CA | 63026 | McAfee Coliseum | Shoreline Amphitheatre CA | 56000 | Dodger Stadium | Shoreline Amphitheatre CA | 45050 | Angel Stadium of Anaheim | Shoreline Amphitheatre CA | 42445 | PETCO Park | Shoreline Amphitheatre CA | 41503 | AT&T Park | Shoreline Amphitheatre CA | 22000 | Shoreline Amphitheatre | Shoreline Amphitheatre CO | 76125 | INVESCO Field | Coors Field CO | 50445 | Coors Field | Coors Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Tropicana Field FL | 73800 | Jacksonville Municipal Stadium | Tropicana Field FL | 65647 | Raymond James Stadium | Tropicana Field FL | 36048 | Tropicana Field | Tropicana Field ...