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)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...
随机推荐
- [C++/Python] 如何在Python中使用一个DLL? (Windows环境)
开发环境VS2012, WIN7 64. 首先生成的DLL大致如下: .h文件 #ifdef CVINPYTHON_EXPORTS #define CVINPYTHON_API __declspec( ...
- ivy antlib shemalocation
<?xml version="1.0" encoding="UTF-8"?> <project name="yourproject& ...
- 慕课网 -- 性能优化之PHP优化总结笔记
视频链接,感兴趣的可以去看看,对我来说耳目一新. http://www.imooc.com/learn/205 什么情况下遇到PHP性能问题 1 :PHP语法使用不恰当 2 :使用了PHP语言他不擅长 ...
- appium的三种等待方式 (还没实践过,记录在此)
参考:https://testerhome.com/topics/2576
- java web 程序---javaBean
1.JavaBean 是Java中的一个组件技术,类似于微软的COM组件 SUN公司将JavaBean定义为:可以重复利用的软件组件 2.JavaBean的种类:a.可视化JavaBean b.非 ...
- Spring batch学习 持久化表结构详解(2)
#接上一篇 这一篇讲一下持久化需要表 batch_job_execution, batch_job_execution_context, batch_job_execution_params, bat ...
- EasyUI汇总
easyui combobox添加清除选项按钮 <input class="easyui-combobox" name="appType" data-op ...
- vconsole使用
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- linux Crontab 使用
cron 用法说明 全文如下: cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序.例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron ...
- 为阿里云ECS服务器二级域名绑定tomcat子目录,实现一个IP多个二级域名
摘要:前几天租了阿里云ECS服务器,选择的Windows系统,并在服务器上部署了tomcat服务器,随后我又买了一个域名,可一个域名只能指向一个IP地址,包括二级域名也只能指向一个IP地址,并不能指向 ...