如何用qSQL计算分组内同日期的滞后时间差值
qSQL时间差计算实现方案
该需求可以通过qSQL实现,具体实现逻辑和代码如下:
实现逻辑
- 先对原表按
ids、dates、times升序排序,确保同一id、同一日期下的事件按发生时间排序 - 按
ids和dates分组,对每组内的时间序列计算相邻差值 - 将时间差转换为分钟单位,将每组第一条记录的空差值替换为0(单条记录的分组自动对应差值为0)
完整代码
示例表构造
ids: 1 1 1 1 1 2 2 2 2 2 dates: 2021.03.10 2021.03.10 2021.03.10 2021.03.11 2021.03.11 2021.03.10 2021.03.11 2021.03.11 2021.03.11 2021.03.11 times: 12:00 12:01 12:03 12:04 12:05 13:01 13:05 13:06 13:12 13:15 t:([] ids:ids; dates:dates; times:times)
时间差查询代码
res: select ids, dates, times, deltaMinutes: 0^`minute$deltas times by ids, dates from `ids`dates`times xasc t
输出结果
ids dates times deltaMinutes --------------------------------- 1 2021.03.10 12:00 0 1 2021.03.10 12:01 1 1 2021.03.10 12:03 2 1 2021.03.11 12:04 0 1 2021.03.11 12:05 1 2 2021.03.10 13:01 0 2 2021.03.11 13:05 0 2 2021.03.11 13:06 1 2 2021.03.11 13:12 6 2 2021.03.11 13:15 3
内容的提问来源于stack exchange,提问作者Demetri Pananos
相关产品推荐
相关产品推荐

