我如何知道客户每次交易的平均时间(以秒为单位)?
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个交易,差异交易。
预期表:
Customer ID Average time between each transactions for customer
1 (126+113)/3
2
3
答案 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
。
这确实假设时间只是增加(这似乎是对这类问题的合理假设)。