Databricks SQL 支持多種窗口函數,這些函數可以用于分析和處理數據
- ROW_NUMBER():為每一行分配一個唯一的數字,根據 ORDER BY 子句中指定的列進行排序。
- RANK():計算每一行相對于其他行的排名,并為具有相同值的行分配相同的排名。
- DENSE_RANK():與 RANK() 類似,但在排名時不會跳過任何數字。
- NTILE():將結果集中的行分布到指定數量的組中,每組的大小相等(或接近相等)。
- LAG():返回結果集中當前行之前的指定偏移量的行的值。
- LEAD():返回結果集中當前行之后的指定偏移量的行的值。
- FIRST_VALUE():返回窗口中第一個行的值。
- LAST_VALUE():返回窗口中最后一個行的值。
- NTH_VALUE():返回窗口中指定偏移量的行的值。
- CUME_DIST():計算當前行的累積分布。
- PERCENT_RANK():計算當前行的百分比排名。
要使用窗口函數,需要在 SELECT 語句中添加 OVER 子句,該子句定義了窗口函數應用于哪些行和列。例如:
SELECT id, value, ROW_NUMBER() OVER (ORDER BY value DESC) as row_number
FROM my_table;
這個查詢將按照 value
列降序排列,并為每一行分配一個唯一的 row_number
。