我有一个如下所示的表,其中包含不同时间间隔的开始和结束时间以及与这些时间间隔对应的数量。我需要一个查询,该查询将根据从现在()到5小时、从现在()到10小时、从现在()到15小时的时间间隔计算数量
例如:在下图中,现在时间是12:00 PM,因此现在()到5小时是12:00到5:00 PM-〉行号(S编号)从3到6,部分7将符合条件,数量应如下所示:第3行-〉10至12:30,2.30小时(150分钟)的数量为4556,但我需要半个n小时,因为现在()至12:30是30分钟。因此,我只需要30分钟的4556数量-〉4556*30/150 4、5、6行全部符合条件-〉因此,4905数量第7行-〉下午4:00至6:00-〉2小时,数量为3645。我需要到下午5:00,即,1小时,因此,3645/2因此,我现在()至5小时的总数量为7638
| S编号|间隔开始|间隔结束|数量|最小时间差|
| - -|- -|- -|- -|- -|
| 一个|2022年11月23日8时30分|2022年11月23日9时45分|小行星3045|七十五|
| 2个|2022年11月23日9时45分|2022年11月23日上午10时|第0页|十五|
| 三个|2022年11月23日上午10时|2022年11月23日12时30分|小行星4556|一百五十个|
| 四个|2022年11月23日12时30分|2022年11月23日13时|第0页|三十|
| 五个|2022年11月23日13时|2022年11月23日15时45分|小行星4905|一百六十五|
| 六个|2022年11月23日15时45分|2022年11月23日16时|第0页|十五|
| 七个|2022年11月23日16时|2022年11月23日18时|小行星3645|一百二十|
| 八个|2022年11月23日18时|2022年11月23日18时45分|第0页|四十五|
如何实现这是mySQL使用SQL查询?
enter image description here
1条答案
按热度按时间ffscu2ro1#
1.假设NOW =
2022-11-24 05:30:00
,即15分钟过去了,最后interval_end
显示在图像中。1.生成一系列分钟时间戳,从NOW一直回溯到最早的
interval_start
1.计算
qty_per_minute
=qty
/time_diff_min
(或使用timestampdiff()
计算interval_start
和interval_end
之间的分钟数1.计算从NOW开始的第n个5小时间隔,并聚合到每个5小时间隔。
结果(预期
qty
舍入误差):样本数据如下: