last_value
是一個窗口函數,它用于獲取窗口內某列的最后一個值
以下是 last_value
函數的基本語法:
LAST_VALUE(column) OVER (
[PARTITION BY partition_column1, partition_column2, ...]
ORDER BY order_column1, order_column2, ...
[ROWS/RANGE frame_clause]
)
column
:要獲取最后一個值的列。PARTITION BY
:可選項,用于指定分區列。根據這些列的值,結果集將被劃分為多個分區,每個分區都會單獨計算 last_value
。ORDER BY
:用于指定排序列。last_value
會根據這些列的值來確定哪一行是窗口內的最后一行。ROWS/RANGE
:可選項,用于指定窗口范圍。它決定了 last_value
函數應該在哪些行上進行計算。以下是一個使用 last_value
函數的示例:
WITH sales_data AS (
SELECT
employee_id,
sale_date,
sale_amount
FROM
sales
)
SELECT
employee_id,
sale_date,
sale_amount,
LAST_VALUE(sale_amount) OVER (
PARTITION BY employee_id
ORDER BY sale_date
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) as last_sale_amount
FROM
sales_data;
在這個示例中,我們首先創建了一個名為 sales_data
的臨時表,包含 employee_id
、sale_date
和 sale_amount
列。然后,我們使用 LAST_VALUE
函數,按照 employee_id
對數據進行分區,并按照 sale_date
對每個分區內的數據進行排序。ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
子句表示窗口范圍包括分區內的所有行。最后,我們選擇 employee_id
、sale_date
、sale_amount
和計算出的 last_sale_amount
列。