【发布时间】:2018-01-03 13:29:52
【问题描述】:
我浏览了 SO,但找不到确切的答案,或者可能是针对不同的语言。
假设我有一个表格,其中每一行都是交易记录:
trade_id customer trade_date
1 A 2013-05-01 00:00:00
2 B 2013-05-01 10:00:00
3 A 2013-05-02 00:00:00
4 A 2013-05-05 00:00:00
5 B 2013-05-06 12:00:00
我想知道交易之间的平均时间,以天数或天数为单位,每个客户,以及自上次交易以来的天数。例如,对于客户 A,交易 1 和 3 之间的时间为 1 天,交易 3 和 4 之间的时间为 3 天,平均为 2。所以最终表看起来像这样(假设今天是 2013-05 -10):
customer avg_time_btw_trades time_since_last_trade
A 2.0 5.0
B 5.08 3.5
如果客户只有 1 笔交易,我猜 NULL 可以作为输出。
甚至不确定 SQL 是否是执行此操作的最佳方法(我正在使用 SQL 服务器),但感谢您提供任何帮助!
【问题讨论】:
-
@RolandStarke
(numberOfTrades - 1)。那么- 1非常重要,这也意味着你最终想要像NULLIF(numberOfTrades, 1) - 1这样的东西来避免除以零错误。
标签: sql sql-server datetime group-by