1. 用法
是在窗口函數中使用的函數,它用于獲取當前行的下一行(后一行)的某個列的值。具體來說,LEAD() 函數可用于查找任何給定行的下一行(后一行)的值,同時也可控制行數偏移量(offset)和默認值(default value)。
2. 基本語法
LEAD ( column [, offset [, default_value ]])
OVER ( [ ORDER BY clause ] )
- column 參數:指定要獲取其值的列名稱
- offset 參數:指定要偏移的行數
- default_value 參數:指定如果無法找到下一行,則使用的默認值
- ORDER BY子句:用于指定窗口中的行順序
3. 實際應用
假設今天的日期是 ‘2021-1-1’ 。
編寫解決方案,對于每個 user_id ,求出每次訪問及其下一個訪問(若該次訪問是最后一次,則為今天)之間最大的空檔期天數 window 。
返回結果表,按用戶編號 user_id 排序。
結果格式如下示例所示:
select user_id,max(diff) as biggest_window
from (select user_id,visit_date,datediff(day,visit_date,lead(visit_date ,1 ,'2021-01-01') over(partition by user_id order by visit_date) ) as Difffrom UserVisits ) a
group by user_id
order by user_id