赞
踩
表里要有两个字段,日期(YYYY-MM)、秤数量;从相关表中获取这两个字段,设置时间;建立事件,调用存储过程
drop table `rate_a`
create table `rate_a`(
`id` int(11) not null auto_increment,
`date_a` date default null,
`num_a` int(11) default "0",
PRIMARY key(`id`),
key `date_a`(`date_a`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
注意字段的类型:date就是YYYY-MM-DD 如果插入的数据不符合,就返回为0
CREATE DEFINER=`bianla_xujh`@`localhost` PROCEDURE `rate_a`(IN current_t DATE) BEGIN SET @date:= DATE_ADD(current_t,INTERVAL -1 MONTH), @date_f:= DATE_FORMAT(@date,'%Y-%m-01 00:00:00'), @date_t:= DATE_FORMAT(Last_DAY(@date),'%Y-%m-%d 23:59:59'); DELETE FROM `rate_a` WHERE date_a=date_format(@date,'%Y-%m'); INSERT INTO `rate_a`(`date_a`,`num_a`) SELECT aa.date_a, aa.num_a FROM ( SELECT date_format(a.created,'%Y-%m-%d') as date_a, count( DISTINCT a.buyer_user_id ) AS num_a FROM bianla_warespage_order AS a WHERE STATUS IN ( 10, 20 ) # 10,20 代表购买 AND created BETWEEN @date_f AND @date_t ) AS aa; END
begin
call rate_a('2019-01-01');
end
时间的设置在 计划 中
要明白自己写的逻辑,从逻辑的最开始找问题,一步一步排查(从一大堆代码中根据自己的思路流程,一点一点排查),结合报错信息,可以更快捷;如果没有报错,那就是自己的思维漏洞,一定要仔细筛选
由于在第二步中我们有 变量,所以要在里面给变量赋值,注意变量 的类型,对于日期要加 ’ ’
1.确保自己有建立存储,事件的权限
2.确保事件是开着的
3.若表已经存在,先删除表
4.建立表,注意类型,自增主键等等
5.建立存储过程:里面包含查询、插入、时间、变量等语句
Unknown column 'num_1' in 'field list'
一般是 要插入的字段名与表里面的字段名不一致,要检查表名Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。