0

所以,这可能看起来很简单的问题,但因为这个问题,我在招聘过程中失败了。假设我们有以下数据集:

订单号 客户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 无效的
2 10 2020-10-02 1 无效的
3 12 2020-10-04 1 无效的
4 99 2020-11-07 2 2020-10-01
5 10 2020-11-08 2 2020-10-02

我知道窗口功能在这里可以帮助我,但我仍然不知道如何正确使用它。有人可以帮我吗?

4

1 回答 1

0

我想你只是想要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;
于 2021-05-01T23:34:52.870 回答