如何获取客户购买的第二条记录?
How to get the 2nd record for a customer purchase?
我正在处理客户数据库,我想获取他们第二次购买的所有数据(对于我们所有的客户天气,他们有 2 次或更多次购买)。
例如:
Customer_ID Order_ID Order_Date
1 259 09/05/2020
1 644 03/11/2020
1 617 18/04/2022
4 834 22/09/2021
4 995 07/02/2022
我想显示第二个订单是:
Customer_ID Order_ID Order_Date
1 644 03/11/2020
4 995 07/02/2022
我在寻找正确的逻辑时遇到了一些困难,知道如何实现我的最终目标吗? :)
*注意:我使用的是雪花
您可以使用 ROW_NUMBER 并使用 QUALIFY 子句进行过滤:
select * from table qualify row_number() over(partition by customer_id order by order_date) = 2;
您可以使用常见的 table 表达式
with CTE_RS
AS (
SELECT Customer_ID,ORDER_ID,Order_Date,ROW_NUMBER() OVER(PARTITION BY Customer_ID ORDER BY Order_Date ) ORDRNUM FROM *TABLE NAME*
)
SELECT Customer_ID,ORDER_ID,Order_Date
FROM CTE_RS
WHERE ORDRNUM = 2 ;
我正在处理客户数据库,我想获取他们第二次购买的所有数据(对于我们所有的客户天气,他们有 2 次或更多次购买)。 例如:
Customer_ID Order_ID Order_Date
1 259 09/05/2020
1 644 03/11/2020
1 617 18/04/2022
4 834 22/09/2021
4 995 07/02/2022
我想显示第二个订单是:
Customer_ID Order_ID Order_Date
1 644 03/11/2020
4 995 07/02/2022
我在寻找正确的逻辑时遇到了一些困难,知道如何实现我的最终目标吗? :)
*注意:我使用的是雪花
您可以使用 ROW_NUMBER 并使用 QUALIFY 子句进行过滤:
select * from table qualify row_number() over(partition by customer_id order by order_date) = 2;
您可以使用常见的 table 表达式
with CTE_RS
AS (
SELECT Customer_ID,ORDER_ID,Order_Date,ROW_NUMBER() OVER(PARTITION BY Customer_ID ORDER BY Order_Date ) ORDRNUM FROM *TABLE NAME*
)
SELECT Customer_ID,ORDER_ID,Order_Date
FROM CTE_RS
WHERE ORDRNUM = 2 ;