mysql - 购买表的 AVG 间隔长度
问题描述
我将不胜感激有这样一张桌子的帮助:
client_id | transaction_date | amount
-------------------------------------
123 | 2017-01-16 | 12
234 | 2017-01-11 | 25
345 | 2017-01-12 | 211
我想获得同一客户进行下一次交易的一段时间内的平均值 - 换句话说 - 导致某个用户进行下一次交易的平均天数是多少?
我正在考虑一些 TIMESTAMPDIFF,但不知道在这种情况下如何实现它。
解决方案
最简单的方法是取最大值和最小值之差,然后除以行数减一。
所以:
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()
(将您保存在函数参数上)。
推荐阅读
- javascript - 如何在three.js中获取PlaneGeometry的大小
- maven - 是否可以通过配置文件类似于 Maven 模块来激活和停用 Gradle 项目?
- python - 将具有相同键的字典添加到列表而不覆盖 Python 中的值
- android - Android Studio 调试器问题
- python - ValueError:“图像”属性没有与之关联的文件。使用 NULLABLE 图像字段测试模型时
- python - 在 python 中的一张图表上绘制销售额和利润
- android - 如何在应用程序关闭时实时接收呼叫/消息
- google-slides - 如何在谷歌幻灯片中重置一次子弹行为
- javascript - 如何使用 React 在 5 秒后自动触发按钮单击?
- r - 如何研究 R 中这两个变量之间的关系?