客户每笔交易之间的平均时间

Posted

技术标签:

【中文标题】客户每笔交易之间的平均时间【英文标题】:Average time between each transaction for customers 【发布时间】:2017-01-02 13:46:08 【问题描述】:

我如何知道(以秒为单位)?

 Time               Customer ID      Transaction
11/08/2020 00:00:01       1                 111
11/08/2020 00:02:00       2                  0
11/08/2020 00:02:07       1                  0
11/08/2020 00:03:09       3                  412
11/08/2020 00:04:00       1                  0

在 Expected 表之前,我需要显示所需的步骤: 对于客户 ID 1 有 3 笔交易,差异交易。

第一次和第二次事务之间的差异为 126 秒。 第二次和第三次交易相差 113 秒。

预期表:

Customer ID          Average time between each transactions for customer 
1                           (126+113)/3
2   
3   

【问题讨论】:

事务之间的平均时间应该是(126 + 113) / 2,而不是3 【参考方案1】:

平均时间是总时间除以事务数减一。所以:

select customerId,
       (case when count(*) > 1
             then datediff(second, min(time), max(time)) / (count(*) - 1)
        end) as avg_time
from t
group by customerId;

注意:SQL Server 进行整数除法。如果您想要一个非整数作为结果,您可能想要在表达式中进行转换或 count(*) - 1.0

这确实假设时间只会增加(对于此类问题,这似乎是一个合理的假设)。

【讨论】:

我认为你有一个错误,因为你应该除以count(*) - 1 @FDavidov 。 . .实际上,OP有这个问题。我改变了我的答案,并在这一点上添加了评论。 是的,我在按下 ENTER 的同时看到了你的更新。 @GurwinderSingh 。 . .谢谢你。这笔款项不属于那里。 @Gordon Linoff 我认为此查询仅适用于每个客户 2 条记录...不仅如此,它不会给出正确的输出。在这里,在这种情况下,它只需要 min 和 max一个 id...min 和 max 之间的其他记录呢..我们也需要考虑它们..如果我错了请纠正我。

以上是关于客户每笔交易之间的平均时间的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查找事务的平均值

Paypal 商家接受或拒绝每笔交易

从余额交易中获得条纹支付

用户交易时间差

与 Braintree 的每笔交易都需要支付 nonce 吗?

solana简介