计算唯一 ID 上多行之间的时差



我有如下所示的数据:

ID          EventDateTime
1656891     2015-04-21 23:54:36.443
1656891     2015-04-22 00:28:01.313
1656891     2015-04-23 16:09:55.440
1656891     2015-04-26 19:17:30.140
1656891     2015-04-26 21:50:45.167
1668876     2015-04-23 13:28:27.827
1668876     2015-04-23 15:57:15.393
1718737     2015-04-16 11:27:17.143
1743848     2015-04-16 03:15:50.900
1743848     2015-04-16 11:28:09.383
1743848     2015-04-21 17:32:47.610
1743848     2015-04-22 01:06:22.707
1746479     2015-04-16 18:36:26.587
1746479     2015-04-18 16:04:12.410
1746479     2015-04-20 21:01:50.907
1746479     2015-04-20 23:26:56.743

我需要SELECT给定IDEventDateTime列上的DATEDIFF(MINUTE...)。 例如,对于1656891,我应该得到7076. 有没有办法为每个ID计算这个,这样我就会得到这样的输出:

ID         Minutes
1656891    7076
...        ...

我找到了其他一些关于迭代的帖子,但查询最终需要一分钟多的时间才能运行,所以我的代码显然效率很低。

我猜你想要每个id的最早值和最新值之间的分钟差。 这至少在值 7076 的范围内。

select id, datediff(minute, min(eventdatetime), max(eventdatetime) ) as minutes
from table t
group by id;

最新更新