如何解决如何使用sqlite窗口功能对日期时间进行分组?
假设我有一个包含以下字段的表格:
客户编号,交易时间,交易类型
我想按时间对客户的交易进行分组,然后选择客户ID和这些交易的数量。但是,与其简单地将所有交易时间分组为一定的增量(15分钟,30分钟等)(我已经在这里看到了各种解决方案),我不如根据每笔交易发生的时间将一组客户的交易分组在上一个之后。
换句话说,如果上次交易后15分钟内发生任何交易,我希望将其单独分组。
我希望客户能够同时完成几笔交易,并且有可能在当天晚些时候再产生几笔交易。因此,如果这两套交易间隔时间超过15、30分钟,则将它们分组到单独的窗口中。这可能吗?
解决方法
是的,您可以使用SQLite中的窗口函数来执行此操作。这个语法对我来说有点新,但这就是它的开始方式:
select customer_id,event_start_minute,sum(subgroup_start) over (order by customer_id,event_start_minute) as subgroup
from (
select customer_id,case
when event_start_minute - lag(event_start_minute) over win > 15
then 1
else 0
end as subgroup_start
from t1
window win as (
partition by b
order by c
)
) as groups
order by customer_id,event_start_minute
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。