在mysql中的单个列上循环
我有一个表,看起来像这样,我想知道在六个小时的时间段内注册的条目数,并显示最大条目数的时间段在mysql中的单个列上循环,mysql,Mysql,我有一个表,看起来像这样,我想知道在六个小时的时间段内注册的条目数,并显示最大条目数的时间段 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个小时的时间段,并计算该列中有多少条目将落在该时间段中。 Ex 09:42:29将具有结束时段15:42:29,并且它应计为4(09:42:29,10:37:28 15:18:49,15:28:3
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个小时的时间段,并计算该列中有多少条目将落在该时间段中。
Ex 09:42:29将具有结束时段15:42:29,并且它应计为4(09:42:29,10:37:28
15:18:49,15:28:34)
因此,对时间列中的每个元素以及具有最大计数的元素执行此操作,这将是时段的开始时间,并相应地显示开始和结束时段
请帮助我为此编写一个mysql查询。谢谢你 希望有帮助
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
@Wittyengs是我编辑的回答您的要求的结果吗?@mxix…谢谢您的回答…但是这些值可能不是数据库中的值…那么在这种情况下,无法使用预定义值…用什么替代它。