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 ;

  • 相关阅读:
    AJAX注册
    文件上传加水印
    邮箱
    AJAX完整操作
    跨窗体操作
    容器布局
    EF异常类
    SQL查出字段横向拼接,如:1,2,3,4
    asp.net三层结构中,SQL助手类DbHelperSQL
    正则抓取页面信息
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4572713.html
Copyright © 2011-2022 走看看