MySQL zabbix 流量统计分析脚本(内部业务需求)
2016-02-24 11:30
567 查看
/* zabbix 流量统计:统计某段日期中,每天9~21点每小时最大的5个流量值的平均值 CALL getFlow(startdate,enddate,isdetail); CALL getFlow('2016-01-25','2016-02-01',1); DROP PROCEDURE IF EXISTS getFlow; */ DELIMITER // CREATE PROCEDURE getFlow(IN startdate DATE,IN enddate DATE,IN isdetail BIT(1)) BEGIN DECLARE nowdate DATE; DECLARE nowhour INT; SET nowdate = startdate; CREATE TEMPORARY TABLE tmp_history_uint( clock INT(11), value BIGINT(20) unsigned ); WHILE nowdate<= enddate DO SET nowhour = 9; WHILE nowhour<= 21 DO INSERT INTO tmp_history_uint(clock,value) SELECT clock,value FROM history_uint WHERE itemid=23661 AND clock>=UNIX_TIMESTAMP(nowdate) AND clock<UNIX_TIMESTAMP(DATE_ADD(nowdate,INTERVAL 1 DAY)) AND HOUR(from_unixtime(clock))=nowhour ORDER BY value DESC LIMIT 5; SET nowhour = nowhour + 1; END WHILE; SET nowdate=DATE_ADD(nowdate,INTERVAL 1 DAY); END WHILE; IF isdetail = 1 THEN SELECT date_format(from_unixtime(clock),'%Y-%m-%d') "datetime" ,HOUR(from_unixtime(clock)) "hour" ,AVG(value) "avgvalue" FROM tmp_history_uint GROUP BY date_format(from_unixtime(clock),'%Y-%m-%d'),HOUR(from_unixtime(clock)); ELSE SELECT SUM(avgvalue)/COUNT(avgvalue) AS "avgvalue" FROM( SELECT date_format(from_unixtime(clock),'%Y-%m-%d') "datetime" ,HOUR(from_unixtime(clock)) "hour" ,AVG(value) "avgvalue" FROM tmp_history_uint GROUP BY date_format(from_unixtime(clock),'%Y-%m-%d'),HOUR(from_unixtime(clock)) ) AS T; END IF; DROP TEMPORARY TABLE IF EXISTS tmp_history_uint; END;// DELIMITER ;
相关文章推荐
- 如何修改mysql 并发数
- mySql ERROR 1046(3D000): No Datab
- MySQL 清除表空间碎片
- MySQL大量数据插入各种方法性能分析与比较
- mysqldump导入导出数据库基本方法
- Mysql 导入数据库方法 及失败解决
- MySQL新建用户,授权,删除用户,修改密码
- mysql数据库目录存放位置更改
- Mysql授权远程访问
- MySQL命令行合集
- mysql: command not found
- Mysql分表和分区的区别
- Wamp配置mysql编码
- mysql 数据库导入\导出(总结备忘)
- mysql 二级索引
- MySql 随机取数据(简单版)
- liunx下mysql安装详解---谷营软件科技园
- mysql 存储过程
- mysql的基本操作指令集合大全
- windows7下,mysql启动报错问题解决