【发布时间】:2017-10-05 14:29:07
【问题描述】:
我又回到了堆栈溢出问题,我一直在努力追根溯源,但完全没有成功。无论我使用多少次 avg(datediff) 函数。
我有一个如下的 SQL 表:
ID |个人ID |开始 |结束
1 | 1 | 2006-03-21 00:00:00 | 2007-05-19 00:00:00 |活跃
2 | 1 | 2007-05-19 00:00:00 | 2007-05-20 00:00:00 |活跃
3 | 2 | 2016-08-24 00:00:00 | 2016-08-25 00:00:00 |活跃
4 | 2 | 2005-08-25 00:00:00 | 2016-08-28 00:00:00 |活跃
5 | 2 | 2016-08-28 00:00:00 | 2017-10-05 00:00:00 |主动
我试图找出所有独特人的平均活跃停留时间(以天为单位)。
即基于他们最早开始日期和最晚结束日期的平均天数(因为一个人 ID 可以有多个活动状态)。
例如,人员 ID 1,他们的最早开始日期是 2006 年 3 月 21 日,最晚结束日期是 2007 年 5 月 20 日。因此,他们的逗留时间为 425 天。
对 ID 号 2 重复此操作,它们的停留时间为 407 天。
在为桌子上的每个人做了这个之后......我想得到平均停留时间,上面 5 行的平均停留时间,有 2 个唯一的人是 416。对所有行做一个简单的 datediff 平均值会给我一个非常不准确的平均值,为 102。
希望这是有道理的。一如既往,非常感谢您提供的任何帮助。
【问题讨论】:
-
如果您不信任您的结果,请将 datediff 的结果相加并除以聚合值的数量
-
我不认为这是他想做的。
-
@iLikeMySql 感谢您以非常简单的方式查看它。
标签: mysql date unique average datediff