1

我正在尝试计算客户第 1 次和第 3 次购买之间的平均天数,但很难以一种允许我计算的方式订购数据。

我目前有以下数据表。(注:订单序号是指该客户的订单号。)

订购日期 顾客号码 订单序号
2020-09-20 1 1
2021-01-20 1 2
2021-01-21 1 3
2020-10-01 2 1
2020-08-06 3 1
2020-09-06 3 2
2020-09-09 3 3

我一直试图让数据看起来像下表。[然后能够计算最后两列的 datediff。]

顾客号码 订单数 首次订购日期 第三次订购日期
1 3 2020-09-20 2021-01-21
2 1 2020-10-01 无效的
3 3 2020-08-06 2020-09-09

我已经完全搞砸了代码,但这就是我一直在尝试的。

    CREATE TABLE X2 as
    SELECT
        customer_number,
        max(order_sequence_number) as order_count,
      CASE
        WHEN order_sequence_number = 1 then order_date
        ELSE null
      END as first_order_date,
      CASE
        WHEN order_sequence_number = 3 then order_date
        ELSE null
      END as third_order_date
    FROM X1
    GROUP BY customer_number;

有人可以告诉我我错过了什么吗?提前致谢!

4

1 回答 1

0

您走在正确的轨道上,但您需要聚合函数:

SELECT customer_number,
       max(order_sequence_number) as order_count,
       MAX(CASE WHEN order_sequence_number = 1 THEN order_date END) as first_order_date,
       MAX(CASE WHEN order_sequence_number = 3 THEN order_date END) as third_order_date
FROM X1
GROUP BY customer_number;

要获得天数差异,您只需使用数据库中支持的任何日期算术减去这两个表达式。

于 2021-08-09T18:40:47.297 回答