mariadb 每2小时在SQL中取平均值

omjgkv6w  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(123)

我有一个包含2个字段的SQL表:时间戳和值。下面是数据的一个例子(取自以前的帖子,见下文):

2022-09-17 12:31:00     2
2022-09-17 13:46:00     3
2022-09-17 14:01:00     1.7
2022-09-17 14:16:00     2.3
2022-09-17 15:31:00     2
2022-09-17 16:46:00     2.5
2022-09-17 17:01:00     2.2
2022-09-17 17:16:00     2.4
2022-09-17 18:31:00     2.6
2022-09-17 19:46:00     2.6
2022-09-17 20:01:00     2.7

我尝试每2小时(12:00:00到13:59:59、14:00:00到15:59:59 ...)计算一次“值”列的平均值。
对于最后的输出,我需要如下所示的内容:

2020-09-17 12:00:00    2.5
2020-09-17 14:00:00    2.0

我发现了这个:但我不知道如何适应它的2小时。
谢谢你的帮助

bwntbbo3

bwntbbo31#

根据您提供的链接,我根据该链接中的表信息构建了查询。我们可以使用以下查询,希望它能有所帮助。

SELECT CAST(FLOOR(`timestamp`) AS DATETIME)  AS `time`, AVG(`value`) AS average
FROM times
GROUP BY  DATE(`timestamp`), FLOOR(HOUR(`timestamp`) / 2)

我在MariaDB 10.3上进行了测试

os8fio9y

os8fio9y2#

您可以使用以下代码获得所需的结果:

select concat(Date(`timestamp`),' ',LPAD(FLOOR(HOUR(`timestamp`) / 2)*2,2,'0'),':00:00'), avg(`timestamp`) from times 
group by concat(Date(`timestamp`),' ',LPAD(FLOOR(HOUR(`timestamp`) / 2)*2,2,'0'),':00:00')

SELECT concat(Date(`timestamp`),' ',LPAD(FLOOR(HOUR(`timestamp`) / 2)*2,2,'0'),':00:00')  AS `time`, AVG(`value`) AS average
FROM times
GROUP BY  DATE(`timestamp`), FLOOR(HOUR(`timestamp`)/ 2)

相关问题