delimiter |
CREATE
EVENT statistics_event
ON SCHEDULE
EVERY 1 DAY
STARTS CONCAT(CURRENT_DATE(), ' 00:00:00')
#STARTS '2016-01-22 17:42:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT '统计数据'
DO
BEGIN
DECLARE l_is_initialize INT(11); DECLARE l_yesterday VARCHAR(10); DECLARE l_yesterday_off_net_num INT(11);
DECLARE l_yesterday_registered_num INT(11);
DECLARE l_yesterday_con INT(11);
DECLARE l_yesterday_active_user INT(11);
DECLARE l_yesterday_per_con INT(11); DECLARE l_total_off_net_num INT(11);
DECLARE l_total_registered_num INT(11);
DECLARE l_total_con INT(11);
DECLARE l_total_active_user INT(11);
DECLARE l_total_per_con INT(11); DECLARE l_last_channel_id INT(11);
DECLARE l_last_status_id INT(11); select AUTO_INCREMENT into l_last_channel_id from INFORMATION_SCHEMA.TABLES where TABLE_NAME='stat_channel';
select AUTO_INCREMENT into l_last_status_id from INFORMATION_SCHEMA.TABLES where TABLE_NAME='stat_exe_status'; INSERT INTO stat_exe_status(id,event_scheduler,start_time,status,create_time,update_time)
VALUES (l_last_status_id,'统计event,每天零点执行',CURRENT_TIME(),1,CURRENT_TIME(),CURRENT_TIME()); # 首次时 昨日统计数 means 截止昨日统计数
SELECT count(1) INTO l_is_initialize from stat_channel;
# 获取昨天日期字符串 2016-01-01
SELECT CURRENT_DATE () - INTERVAL 1 DAY INTO l_yesterday ; IF l_is_initialize > 0 THEN
# 昨日离网人数
SELECT count(1) INTO l_yesterday_off_net_num from patient where `status`= 2 and SUBSTR(unsubscribeTime, 1, 10) = l_yesterday;
# 昨天新注册用户数
SELECT COUNT(1) INTO l_yesterday_registered_num from patient where SUBSTR(createtime, 1, 10) = l_yesterday;
# 昨天咨询数
SELECT count(1) INTO l_yesterday_con from crm_order where `status` =2 and SUBSTR(updatetime, 1, 10) = l_yesterday;
# 昨日活跃数
SELECT count(1) INTO l_yesterday_active_user from (SELECT count(1) from user_scan where SUBSTR(create_time, 1, 10) = l_yesterday GROUP BY PATIENT_ID ) t;
# 昨日转换人数
SELECT COUNT(1) INTO l_yesterday_per_con from patient t1 where SUBSTR(t1.createtime, 1, 10) = l_yesterday and EXISTS (SELECT * from crm_order t2 where t1.patientID = t2.patientid and SUBSTR(t2.updatetime, 1, 10) = l_yesterday and t2.status = 2);
ELSE
# 首次:截止昨日 # 截止昨日离网人数
SELECT count(1) INTO l_yesterday_off_net_num from patient where `status`= 2 and SUBSTR(unsubscribeTime, 1, 10) <= l_yesterday;
# 截止昨天新注册用户数
SELECT COUNT(1) INTO l_yesterday_registered_num from patient where SUBSTR(createtime, 1, 10) <= l_yesterday;
# 截止昨天咨询数
SELECT count(1) INTO l_yesterday_con from crm_order where `status` =2 and SUBSTR(updatetime, 1, 10) <= l_yesterday;
# 截止昨日活跃数
SELECT count(1) INTO l_yesterday_active_user from (SELECT count(1) from user_scan where SUBSTR(create_time, 1, 10) <= l_yesterday GROUP BY PATIENT_ID ) t;
# 截止昨日转换人数
SELECT COUNT(1) INTO l_yesterday_per_con from patient t1 where SUBSTR(t1.createtime, 1, 10) <= l_yesterday and EXISTS (SELECT * from crm_order t2 where t1.patientID = t2.patientid and SUBSTR(t2.updatetime, 1, 10) <= l_yesterday and t2.status = 2);
END IF; INSERT INTO stat_channel (
id,
yesterday_off_net_num,
yesterday_registered_num,
yesterday_con,
yesterday_active_user,
yesterday_per_con,
day
) VALUES(
l_last_channel_id,
l_yesterday_off_net_num,
l_yesterday_registered_num,
l_yesterday_con,
l_yesterday_active_user,
l_yesterday_per_con,
CURRENT_TIME()
); SELECT
SUM(yesterday_off_net_num),
SUM(yesterday_registered_num),
SUM(yesterday_con),
SUM(yesterday_active_user),
SUM(yesterday_per_con)
INTO
l_total_off_net_num,
l_total_registered_num,
l_total_con,
l_total_active_user,
l_total_per_con
FROM stat_channel; UPDATE stat_channel SET
total_off_net_num = l_total_off_net_num,
total_registered_num = l_total_registered_num,
total_con = l_total_con,
total_active_user = l_total_active_user,
total_per_con = l_total_per_con
where id = l_last_channel_id; UPDATE stat_exe_status SET
end_time = CURRENT_TIME(),
`status` = 2,
update_time = CURRENT_TIME()
WHERE id = l_last_status_id; END|
delimiter ;

mysql event 入门的更多相关文章

  1. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  2. MySQL数据库入门常用基础命令

    MySQL数据库入门———常用基础命令      数据——公司的生命线,因此在大多数的互联网公司,都在使用开源的数据库产品,MySQL也因此关注度与使用率非常的高,所以做为运维的屌丝们,掌握它的一些基 ...

  3. MySQL使用入门--初识数据库

    MySQL使用入门 数据库概述 数据库是存放数据的仓库.在应用的开发中总是离不开数据的查询.处理.存储,例如图书管理系统就需要操纵和存储大量的数据.没有数据库之前我们使用文件存储数据,但是文件存储有很 ...

  4. [转]MySQL主从复制入门

    1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...

  5. Mysql event学习

    我们可能比较熟悉crond,但是mysql也有一个自己的叫event,oracle的叫job. 开启mysql的event有很多种方法,和临时开启.我们在配置文件里面添加参数,随着服务一起开启. 在[ ...

  6. -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

    [root@DB ~]# mysqldump -uroot -p123 --flush-logs --all-databases >fullbackup_sunday_11_PM.sql -- ...

  7. 【转载】20分钟MySQL基础入门

    原文:20分钟MySQL基础入门 这里持续更新修正 开始使用 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格 ...

  8. [置顶] Mysql存储过程入门知识

    Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...

  9. MySQL 菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

随机推荐

  1. 【转】ubuntu中没有/etc/inittab文件探究

    原文网址:http://blog.csdn.net/gavinr/article/details/6584582 linux 启动时第一个进程是/sbin/init,其主要功能就是软件执行环境,包括系 ...

  2. 【转】第七章、Linux 文件与目录管理

    原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 ...

  3. 生成.eps文件方法

    生成.eps文件方法 背景: 要写论文了,图像的分辨率是一大痛点 方法一: 两步生成.eps文件 用visio 制作图形,保存为pdf格式: 直接用adobe acrobat 打开pdf,然后保存为. ...

  4. vim自定义配置之UI设置

    vimConfig/plugin/ui-setting.vim let os = substitute(system('uname'), "\n", "", & ...

  5. 【free() invalid next size】谨慎地在C++的类中存储指针来方便访问其他节点

    “我跟你们说,你们知道STL容器,vector/string/deque等等,都有个reserve方法吗?你们一个个地push_back,嫌C++比C慢,怪谁?” “要像我这样,预先分配足够大的空间, ...

  6. (转)ASP连接sql server实例解析

    本文转载自:http://blog.csdn.net/xys_777/article/details/5696276 1.首先确定自己的iis没有问题 2.其次确定自己sqlserver没有问题 然后 ...

  7. Bootstrap-CSS

    ylbtech-Bootstrap-Plugin: 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1.   2.   11.返回顶部   作者:yl ...

  8. 无法正确解析FreeMarker视图

    在使用SpringMVC处理FreeMarker的时候,出现了无法解析视图名的问题,报的异常说明的也非常清楚就是不能解析视图 这个free就是一个FreeMarker的模板名,它的完整路径是/WEB- ...

  9. 读取配置文件工具demo

    //读取配置文件public class ResourcesUtils { /* * @description:根据属性获取文件名 * * @param:propertyName文件的属性名 * * ...

  10. icape3 的使用

    在FPGA中,有时需要使用用户代码重配置FPGA,配置的内容可以是flash或者是其他的来源这样FPGA的启动模式有关,在本实验中配置文件是存放在flash中.实际的操作步骤如下: 1:生成一个工程, ...