是这样一个问题。有一个包含火车时刻表数据的 SQL 表。它有两列 - rasp_date,负责火车的出发,和race_hours,表示这列火车到最终目的地的旅行时间。下面是这个表的一个例子:
RASP_DATE RACE_HOURS
01.10.2020 15:05:00 4
01.10.2020 15:35:00 3
01.10.2020 16:10:00 8
01.10.2020 16:25:00 6
有必要根据这些数据制定报告,计算每小时的总行程时间。例如,按照上面的示例,报告将显示从 15:00 到 16:00 的总行程时间为 7 小时,从 16:00 到 17:00 - 14 小时。使用分组可以轻松完成此任务。但是,任务有点不同 - 计算“浮动”小时内的旅行小时数。用户输入参数“时间分钟”(例如15),是5的倍数,现在“windows”应该不是从15:00到16:00计算,而是从15:15到16:15 ,从 17:15 到 18:15 等。很可能,为此您需要更改分组,但我不知道该怎么做。请,请指教。
按指定窗口大小获取数据的示例。不指定 DBMS 和版本,使用 MySQL 版本 8。总时长以分钟计算。
test- 初始数据表@chunk- (用户输入的)窗口大小小提琴
另外,为了控制,请求显示
start包含在当前窗口的总时间中的那些记录的列表。如果您需要显示的不是整个期间的数据,而是仅显示某个期间的数据,请进行相应更改。方式
cte1并根据所需的边界生成窗口列表。最后,我找到了解决问题的办法。按浮动时间分组是这样完成的:
创建参数“分钟”。
创建一个新公式“floating_hour”:
按“RASP_DATE”创建和分组的组(每周)
根据“floating_hour”公式创建了一个组和分组。
使用 CR 工具,对“floating_hours”组求和 RACE_HOURS。