本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 值來決定要使用的列。如果您不指定 IGNORE NULLS,則預設支援 RESPECT NULLS。
- OVER
-
引進函數的視窗子句。
- PARTITION BY expr_list
-
以一或多個表達式定義函數的視窗。
- ORDER BY order_list
-
排序每一個分割區內的列。如果未指定 PARTITION BY 子句,ORDER BY 會排序整個資料表。如果您指定 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
...