客户每次交易的平均时间

时间:2017-01-02 13:46:08

标签: sql sql-server

我如何知道客户每次交易的平均时间(以秒为单位)?

 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   

1 个答案:

答案 0 :(得分:1)

平均时间是总时间除以交易数量的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

这确实假设时间只是增加(这似乎是对这类问题的合理假设)。