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 ] )

引數

運算式

函數運算的目標欄或表達式。

IGNORE NULLS

函數會傳回框架中最後一個值,但不是 NULL(或NULL所有值皆為 NULL)。

RESPECT NULLS

指出 Amazon Redshift 應該包含 null 值來決定要使用的列。RESPECT NULLS 如果您未指定 ,預設支援 IGNORE NULLS。

OVER

引進函數的視窗子句。

PARTITION BY expr_list

以一或多個表達式定義函數的視窗。

ORDER BY 訂單_清單

排序每一個分割區內的列。如果未指定 PARTITION BY 子句,ORDERBY 會排序整個資料表。如果您指定 ORDER BY 子句,則還必須指定 frame_clause

結果取決於資料的順序。在下列情況中,結果不確定:

  • 未指定 ORDER BY 子句時,且分割區包含兩個不同的運算式值

  • 當表達式評估為與 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 ...