gpt4 book ai didi

sql - 按组划分的同一字段中的日期之间的平均时间

转载 作者:行者123 更新时间:2023-12-03 02:02:35 31 4
gpt4 key购买 nike

我有一个包含销售数据和用户 ID 的事务数据库,如下所示:

id_usuarioweb   dt_fechaventa
1551415 2015-08-01 14:57:21.737
1551415 2015-08-06 15:34:21.920
6958538 2015-07-30 09:26:24.427
6958538 2015-08-05 09:30:06.247
6958538 2015-08-31 17:39:02.027
39101175 2015-08-05 16:34:17.990
39101175 2015-09-20 20:37:26.043
1551415 2015-09-05 13:41:43.767
3673384 2015-09-06 13:34:23.440

我想计算数据库中同一客户的日期之间的平均差异(以查找用户购买的平均频率)。

我知道我可以用两列执行 datediff,但我在尝试在同一字段中执行此操作并按用户 ID“分组”时遇到问题。

期望的结果是这样的:

id_usuarioweb   avgtime_days
1551415 5
6958538 25
39101175 25
1551415 0
3673384 0

我怎样才能实现这个目标?我会让数据库按 user_id 排序,然后按 dt_fechaventa (销售时间)排序。

使用:SQL Server 2008

最佳答案

我想你要找的东西是这样计算的。获取最大和最小日期,获取它们之间的差值,然后除以购买数量。

SELECT id_usuarioweb, CASE 
WHEN COUNT(*) < 2
THEN 0
ELSE DATEDIFF(dd,
MIN(
dt_fechaventa
), MAX(
dt_fechaventa
)) / (
COUNT(*) -
1
)
END AS avgtime_days
FROM mytable
GROUP BY id_usuarioweb

编辑:(@GordonLinoff)

如果你看一下数学,就很容易看出这是正确的原因。考虑三个日期:a、b 和 c。

它们之间的平均时间是:

((b - a) + (c - b)) / 2

这简化为:

(c - a) / 2

换句话说,中间值相互抵消。而且,无论中间值有多少,这种情况都会继续。

关于sql - 按组划分的同一字段中的日期之间的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32723438/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com