如何在SQLite3中计算用户相邻交易的时间差?
SQLite3实现用户交易时间间隔计算
假设你的交易表名为transactions,可以使用SQLite的窗口函数结合时间处理函数实现需求,查询语句如下:
SELECT "Transaction ID", Timestamp, "User ID", CASE WHEN LAG(Timestamp) OVER (PARTITION BY "User ID" ORDER BY Timestamp) IS NULL THEN 'None' ELSE CAST((JULIANDAY(Timestamp) - JULIANDAY(LAG(Timestamp) OVER (PARTITION BY "User ID" ORDER BY Timestamp))) * 1440 AS INTEGER) END AS "Time Taken" FROM transactions ORDER BY "Transaction ID";
关键逻辑说明:
- 窗口函数
LAG():按User ID分组,再按Timestamp排序,获取当前交易对应的该用户上一次交易的时间戳。 - 时间差计算:用
JULIANDAY()将时间戳转为儒略日格式,差值乘以1440(1天的分钟数)得到分钟间隔,最后转为整数。 - 空值处理:通过
CASE语句判断,若没有上一次交易(LAG()返回空)则显示None,否则输出计算出的分钟数。 - 结果排序:按
Transaction ID排序,保证输出顺序与期望表格一致。
执行该查询后,输出结果将完全匹配你给出的期望格式。
内容的提问来源于stack exchange,提问作者imad97
相关产品推荐
相关产品推荐

