zoukankan      html  css  js  c++  java
  • mysql 求时间段平均值

    考虑下面的需求,在一段时间内,间隔一段时间,取一个平均值,把所有的平均值取出来,怎么办?
    思路:在存储过程中,拼接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 ;

  • 相关阅读:
    好用的jsDelivr
    纯css实现图片或者页面变灰色
    三元表达式的连写
    markdown常用语法小结
    vue中的事件修饰符
    ES6笔记一
    less使用小结
    flex布局小结
    所思所想,关于坚持
    前端渲染图片报403问题解决方案
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4572713.html
Copyright © 2011-2022 走看看