首页 > 解决方案 > 购买表的 AVG 间隔长度

问题描述

我将不胜感激有这样一张桌子的帮助:

  client_id | transaction_date | amount
  -------------------------------------
      123   |     2017-01-16   |   12
      234   |     2017-01-11   |   25 
      345   |     2017-01-12   |  211

我想获得同一客户进行下一次交易的一段时间内的平均值 - 换句话说 - 导致某个用户进行下一次交易的平均天数是多少?

我正在考虑一些 TIMESTAMPDIFF,但不知道在这种情况下如何实现它。

标签: mysqlsqldateaverage

解决方案


最简单的方法是取最大值和最小值之差,然后除以行数减一。

所以:

select client_id,
       ( datediff(max(transaction_date), min(transaction_date)) /
         nullif(count(*) - 1, 0)
       ) as avg_duration
from t
group by client_id;

因为您正在处理日期,所以您可以使用datediff()而不是timestampdiff()(将您保存在函数参数上)。


推荐阅读