Snowflake 的 Window Functions
Jake Roach
Field Data Engineer
用於在一個列的「視窗」中計算,並為每一列回傳一個值。
$$
$$
排名
RANK、DENSE_RANKFIRST_VALUE、LAST_VALUE、NTH_VALUELAG、LEAD彙總
COUNT、SUM、AVG視窗函式能幫助我們回答新的問題!
$$
傳統彙總函式必須搭配 GROUP BY 子句。


不需要 GROUP BY!
SELECT
<other-fields>,
ROW_NUMBER() OVER(
ORDER BY <field>
) AS <alias>
FROM SCHEMA.table
...;
ROW_NUMBER() 會為結果集中每筆紀錄指派一個列號
$$
OVER() 定義視窗GROUP BY!SELECT
customer_id,
event_name,
-- Assign a row number to each
-- record in the result set
ROW_NUMBER() OVER(
ORDER BY time_spent_minutes
) AS row_num
FROM concerts.attendance;
customer_id | event_name | row_num
------------- | ------------ | ---------
1931292 | Music Fest | 1
5462384 | Elton John | 2
7732891 | Coachella | 3
3124888 | Porch Fest | 4
$$
$$
記住語法:ROW_NUMBER() OVER( ORDER BY ...)!
Snowflake 的 Window Functions