MysqL求时间段平均值的方法:首先在存储过程中,拼接sql语句;然后据起始时间和结束时间,while循环每次加一段时间;最后进行时间段平均即可。
本教程操作环境:windows7系统、MysqL8.0.22版,Dell G3电脑。
思路:在存储过程中,拼接sql语句。根据起始时间和结束时间,while循环每次加一段时间。
DROP PROCEDURE IF EXISTS `get_avg`; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `get_avg`(in iStartTime datetime, in iEndTime datetime) BEGIN declare vsql varchar(10240) default ''; declare vNextTime datetime; while(iStartTime < iEndTime) do -- 每次加一个小时 set vNextTime = date_add(iStartTime,interval 3600 second); -- 单引号是特殊字符,要表示单引号,使用 '' 进行转义 set vsql = concat(vsql,'union select 100, avg(`value`) from t1 where time between ''',iStartTime,''' and ''', vNextTime,''' '); set iStartTime = vNextTime; end while; set vsql = substring(vsql,7); -- 看看拼接的字符串是否正确 -- select vsql; set @vsql = vsql; prepare stmt from @vsql; execute stmt; deallocate prepare stmt; END ;; DELIMITER ;
相关免费推荐:编程视频课程
更多相关免费学习推荐:mysql教程(视频)