【发布时间】:2020-12-05 14:13:24
【问题描述】:
如何以 5 分钟的间隔对日期时间进行分组。
这是我的桌子
id Belongs_to dt
----------------------------------------
102 2020-08-07 2020-08-07 09:48:01.000
102 2020-08-07 2020-08-07 09:48:03.000
102 2020-08-07 2020-08-07 16:24:01.000
102 2020-08-07 2020-08-07 17:22:03.000
102 2020-08-07 2020-08-07 17:23:01.000
102 2020-08-07 2020-08-07 17:23:01.000
102 2020-08-07 2020-08-07 21:28:03.000
102 2020-08-07 2020-08-07 21:28:04.000
我尝试了下面的查询来分组
select
t.emp_Reader_id, Belongs_to,
format(dt, 'yyyy-MM-dd HH:mm') as dt,
row_number() over (partition by t.emp_reader_id, Belongs_to order by FORMAT(dt, 'yyyy-MM-dd HH:mm')) as seqnum
from
trnevents t
where
T.emp_reader_id = 102
group by
t.emp_reader_id, format(dt, 'yyyy-MM-dd HH:mm'), Belongs_to
现在可以忽略时间秒数,如果它在同一时间,我想按 5 分钟间隔分组
预期输出:
id Belongs_to dt seqnum
102 2020-08-07 2020-08-07 09:48 1
102 2020-08-07 2020-08-07 16:24 2
102 2020-08-07 2020-08-07 17:22 3
102 2020-08-07 2020-08-07 21:28 4
【问题讨论】:
-
请在您的问题中也包含所需的输出。
-
@VahidFarahmandian 添加了我希望在 5 分钟内避免时间的所需输出
-
您的餐桌上有唯一的 ID 吗?
-
row_number() over ( PARTITION BY emp_reader_id , (DATEADD(minute, (DATEDIFF(minute, '', dt)/10)*10, '')) order by FORMAT(dt, 'yyyy -MM-dd HH:mm')) 作为 RowNo
标签: sql sql-server tsql