技术问询:如何获取指定客户的最近7次配送记录?
如何获取指定客户的最近7次配送记录?
原始数据

预期结果

已尝试的SQL语句
select customer ID, Package ID, date, row_number() over (partition by customer id, package id order by date desc) as nth delivery from data
修正方案
当前SQL的核心问题是分区逻辑错误:同时按customer id和package id分区会把同一客户的不同包裹分开统计序号,无法实现对该客户全部配送记录的整体排序。
正确的SQL写法如下:
select customer_id, package_id, date, nth_delivery from ( select customer_id, package_id, date, row_number() over (partition by customer_id order by date desc) as nth_delivery from data where customer_id = '目标客户ID' -- 替换为你要查询的具体客户ID ) t where nth_delivery <= 7;
关键说明
- 内层查询仅按
customer_id分区,确保同一客户的所有配送记录按日期倒序生成连续序号 - 通过
where customer_id = '目标客户ID'精准筛选指定客户 - 外层查询筛选序号≤7的记录,直接得到该客户最近7次配送数据
内容的提问来源于stack exchange,提问作者user14263992
相关产品推荐
相关产品推荐

