簡體   English   中英

使用 window function 來獲取客戶到目前為止下了多少訂單以及他們最后一次下訂單的時間

[英]Using window function to get how many orders a customer has made so far and when was their last order

所以,這可能看起來很簡單的問題,但因為這個問題,我在招聘過程中失敗了。 假設我們有以下數據集:

訂單號 客戶ID 訂購日期 合計訂單
1 99 2020-10-01 100 美元
2 10 2020-10-02 150 美元
3 12 2020-10-04 390 美元
4 99 2020-11-07 99 美元
5 10 2020-11-08 10 美元

我被要求獲取訂單 ID、客戶 ID、訂單日期、他們在下訂單時下了多少訂單以及他們的最后一個訂單是什么時候(如果存在)。 所以,在這種情況下,我們最終會得到:

訂單號 客戶ID 訂購日期 已下單 最后的訂單
1 99 2020-10-01 1 null
2 10 2020-10-02 1 null
3 12 2020-10-04 1 null
4 99 2020-11-07 2 2020-10-01
5 10 2020-11-08 2 2020-10-02

我知道 window function 會在這里幫助我,但我仍然不知道如何正確使用它。 有人可以幫我嗎?

我想你只想要row_number()lag()

select t.*,
       row_number() over (partition by clientId order by orderDate) as ordersmade,
       lag(orderDate) over (partition by clientId order by orderDate) as prev_orderDate
from t;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM