mysql event 入门
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 入门的更多相关文章
- MySQL数据库入门备份数据库
MySQL数据库入门——备份数据库 一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...
- MySQL数据库入门常用基础命令
MySQL数据库入门———常用基础命令 数据——公司的生命线,因此在大多数的互联网公司,都在使用开源的数据库产品,MySQL也因此关注度与使用率非常的高,所以做为运维的屌丝们,掌握它的一些基 ...
- MySQL使用入门--初识数据库
MySQL使用入门 数据库概述 数据库是存放数据的仓库.在应用的开发中总是离不开数据的查询.处理.存储,例如图书管理系统就需要操纵和存储大量的数据.没有数据库之前我们使用文件存储数据,但是文件存储有很 ...
- [转]MySQL主从复制入门
1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...
- Mysql event学习
我们可能比较熟悉crond,但是mysql也有一个自己的叫event,oracle的叫job. 开启mysql的event有很多种方法,和临时开启.我们在配置文件里面添加参数,随着服务一起开启. 在[ ...
- -- 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 -- ...
- 【转载】20分钟MySQL基础入门
原文:20分钟MySQL基础入门 这里持续更新修正 开始使用 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- MySQL 菜鸟入门“秘籍”
一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...
随机推荐
- 什么是Spark(四)运算过程中的黑科技
Spark在运算过程中提供了一套完整的机制用来提高效率. 1. 用于收集信息的Accumulator,自带增量,用于spark全局收集数据:共享数据: 2. 用于提高传输速率的broadcast机制: ...
- UOJ 347(洛谷4220) 【WC2018】通道——随机化
题目:http://uoj.ac/problem/347 https://www.luogu.org/problemnew/show/P4220 先写了暴力分的44分.那个两棵树.其中一棵是编号连续的 ...
- C# List的深复制
1.关于深拷贝和浅拷贝 C#支持两种类型:值类型和引用类型 值类型(Value Type):如 char, int, float,枚举类型和结构类型 引用类型(Reference Type):如Cla ...
- ubuntu 16.04安装HUSTOJ过程
一.背景介绍: 因为工作需要,想在学校搭建一个OJ平台用于程序测试与评价.于是需要搭建oJ,由于之前都是在云端服务器搭建系统,没有在实际服务器平台搭建过,所以遇到不少坑,都靠自己来填补.故而写下此教程 ...
- 编译sass,遇到报错error style.scss (Line 3: Invalid GBK character "\xE5")
今天学习sass,写了一行中文注释,结果却遇到了报错: cmd.exe /D /C call C:/Ruby23-x64/bin/scss.bat --no-cache --update style. ...
- 学习blus老师js(3)--定时器的使用
1.无缝滚动——基础 物体运动基础 让Div移动起来 offsetLeft的作用 用定时器让物体连续移动 offsetLeft: 获取物体的左边距:最大的优点在于可以综合考虑所有影响这个物体位置的 ...
- unittest框架出报告乱码的问题解决
跟着上面的步骤修改好后,unittest断言写法要写成下面这样才能展示非乱码
- zufeoj 1018 阶乘第k位是多少(sprintf)
题目描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入 第一 ...
- Running Your App(运行你的应用程序)
如果你按照上一篇课程创建了android项目,它将包含helloworld的源文件,让你可以立即运行你的应用程序. 你如何运行你的应用程序app依赖于两件事: 你是否拥有一台真正的android设备 ...
- HUAWEI手机解锁
1.关机:2.同时按上音量键和电源键,直至出现Android system recovery,按下音量键选择wipe date/factory reset->Yes-delete all use ...