我有一个看起来像这样的表,我想知道在六小时时间段内注册的条目数,并显示具有最大条目数的那个时间段。
Time
09:42:29
10:37:28
15:18:49
15:28:34
16:43:51
18:14:10
18:26:06
18:26:14
因此,对于时间列中的每个元素,我将包含从该元素开始的6小时时段,并计算该时段中该列中的条目数。 出09:42:29将结束时间为15:42:29并且应该计为4(09:42:29,10:37:28) 15:18:49,15:28:34)
对时间列中的每个元素以及具有最大计数的元素执行此操作,这将是句点的开始时间并相应地显示开始和结束时间。
帮我写一个mysql查询。谢谢!!!
答案 0 :(得分:0)
希望有所帮助
select
T.TimeStart,
T.TimeEnd,
COUNT(*)
from (
select
T.Time TimeStart,
date_add(T.Time,INTERVAL 6 HOUR) TimeEnd
from TimeTable T
) T
inner join TimeTable T2 on
T2.Time between T.TimeStart and T.TimeEnd
group by
T.TimeStart,
T.TimeEnd
以下代码适用于MSSQL,但它按预期工作,应该为您提供一些如何使用上述示例的指南
WITH TimeTable([Time]) AS (
select
CONVERT(DATETIME,a.a)
from (
values
('09:42:29'),
('10:37:28'),
('15:18:49'),
('15:28:34'),
('16:43:51'),
('18:14:10'),
('18:26:06'),
('18:26:14'))a(a)
)
select
convert(time(7),T.TimeStart)TimeStart,
convert(time(7),T.TimeEnd)TimeEnd,
COUNT(*) [Ocorrences]
from (
select
T.Time TimeStart,
DATEADD(HOUR,6,T.Time) TimeEnd
from TimeTable T
) T
inner join TimeTable T2 on
T2.Time between T.TimeStart and T.TimeEnd
group by
T.TimeStart,
T.TimeEnd