首页 > 代码库 > MySQL 基于存储过程 实现数据统计按日、周、月份统计模板
MySQL 基于存储过程 实现数据统计按日、周、月份统计模板
存储过程developer_count 是根据传入参数searchType 决定是使用那种查询方式,本存储过程中包含的其他的参数是{起始时间:startime,结束时间:endtime}
[html] view plain copy
- CREATE PROCEDURE developer_count
- (
- searchType int,
- startTime varchar(64),
- endTime varchar(64)
- )
- BEGIN
- /*定义变量天数*/
- declare day_num int;
- if searchType = 1 then
- /*本周数据查询*/
- select count(d.acct_id),d.acct_old_time from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(d.acct_old_time) GROUP BY d.acct_old_time;
- end if;
- if searchType = 2 then
- /*本月数据查询*/
- select count(d.acct_id),d.acct_old_time from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(d.acct_old_time) GROUP BY d.acct_old_time;
- end if;
- if searchType = 3 then
- /*最近三个月数据查询*/
- select count(d.acct_id), DATE_FORMAT(d.acct_old_time,‘%x年-第%v周‘) as weeks from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL 90 DAY) <= date(d.acct_old_time) GROUP BY weeks;
- end if;
- if searchType = 4 then
- /*按月份进行数据统计*/
- select datediff(startTime, endTime) into day_num;
- if day_num <=7 then
- select count(d.acct_id),d.acct_old_time from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL day_num DAY) <= date(d.acct_old_time) GROUP BY d.acct_old_time;
- end if;
- if day_num >7 && day_num <= 30 then
- select count(d.acct_id),d.acct_old_time from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL day_num DAY) <= date(d.acct_old_time) GROUP BY d.acct_old_time;
- end if;
- if day_num >30 && day_num <= 90 then
- select count(d.acct_id), DATE_FORMAT(d.acct_old_time,‘%x年-第%v周‘) as weeks from developer d where 1=1 and DATE_SUB(CURDATE(), INTERVAL day_num DAY) <= date(d.acct_old_time) GROUP BY weeks;
- end if;
- end if;
- end;
调用存储过程方法
CALL DEVELOPER_COUNT(1,‘2016-06-07‘,‘2016-06-16‘);调用存储过程
MySQL 基于存储过程 实现数据统计按日、周、月份统计模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。