用户交易时间差

Posted

技术标签:

【中文标题】用户交易时间差【英文标题】:time difference between transaction of user 【发布时间】:2019-11-23 11:49:59 【问题描述】:
Table: txn

customer_id | time_stamp 
-------------------------
1           | 00:01:03
1           | 00:02:04
2           | 00:03:05
2           | 00:04:06

想查询customer_id的每笔第一笔交易和下一笔交易的时间差

结果:

客户 ID |时差

1 | 61

选择客户 ID,... 来自txn

【问题讨论】:

您使用的是 SQL Server 还是 Google BigQuery?这些是非常不同的数据库。 Why Should I Tag My RDBMS? 请说明,使用什么DB,数据如何插入表中,如何获取? 【参考方案1】:

你想要lead()。 . .但众所周知,日期/时间函数是特定于数据库的。在 SQL Server 中:

select t.*,
       datediff(second,
                time_stamp,
                lead(time_stamp) over (partition by customer_id order by time_stamp)
               ) as diff_seconds
from t;

在 BigQuery 中:

select t.*,
       timestamp_diff(time_stamp,
                      lead(time_stamp) over (partition by customer_id order by time_stamp),
                       second
                     ) as diff_seconds
from t;

【讨论】:

以上是关于用户交易时间差的主要内容,如果未能解决你的问题,请参考以下文章

交易表中的用户余额

使用聚合查询获取具有总交易计数和交易详细信息的用户列表作为嵌入文档

如何使用 Python 基于交易数据高效地创建用户图?

通过 API 获取 Android 订阅的用户历史交易记录

AAX 币币交易全场 $0 手续费!

如何从多个授权交易中仅捕获一笔交易?