MySQL_lead()函數_判斷同一id同一列兩行是否相等

假設有一個客戶之前下了訂單,想看看這次訂單距離下一次下單時間相差多少天,這類問題可以通過 lead 函數來求解,Lag和Lead函數可以在同一次查詢中取出同一字段的前N行的數據(Lag)和後N行的數據(Lead)作爲獨立的列。實際應用當中,相比於 left join 等自連接方式的sql更加簡潔。

 

函數語法:

lag(exp_str,offset,defval) over(partition by ..order by …)

lead(exp_str,offset,defval) over(partition by ..order by …)

其中exp_str是字段名(本例中爲交易時間 order_time),offset是偏移量(本例中爲1),defval默認值可以不定義。

 

代碼如下:

select id,order_time
#上一次訂單時間
,lag(order_time,1) over(partition by id order by order_time) last_order_time

#下一次訂單時間
,lead(order_time,1) over(partition by id order by order_time) next_order_time

from order_main_table


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章