我使用sqlapi处理sparksql(v2.4.0)。我有一个要求,需要根据一个sql查询的条件合并记录。
有一个保存客户购买数据的表。要求是安排 line_num
一个 order_id
以顺序方式,将每个记录与其下一个记录进行比较,并计算两个记录之间的差异 purch_dt
这两种记录的核对差异小于 5
天。现在,继续对所有后续记录进行相同的处理,直到遇到差异超过5天的记录—此时将所有这些记录(到目前为止已读取)合并到单个记录并输出它。但是,如果一条记录的差异大于5天,则不要将其合并,而是将此记录视为“新”记录集的开始,然后使用相同的逻辑(如上所述)检查其后续记录,如果逻辑有效,则合并为单个记录。
请参见下面的示例:
order_id | line_num | purch_dt
10001 | 1 | 10-03-2020
10001 | 2 | 13-03-2020
10001 | 3 | 16-03-2020
10001 | 4 | 25-04-2020
10001 | 5 | 26-04-2020
22345 | 1 | 09-01-2020
22345 | 2 | 22-01-2020
预期结果:
order_id | purch_dt
10001 | 16-03-2020
10001 | 26-04-2020
22345 | 09-01-2020
22345 | 22-01-2020
订购 '10001'
前三条记录的日期相差不到5天。因此,它们被视为一个集合,并在输出中全部合并到一个记录中。现在,对于第3条和第4条记录,它们之间的差异超过5天-因此第4条记录被视为一组新记录的开始,然后与第5条记录合并到另一个新记录并输出。
订购 '22345'
,两个记录之间的差异超过5天,因此每个记录将分别处理并输出。
谁能帮我用sql查询解决这个问题。
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!