如何用sql实现以下要求
:假如1月1日的日数据是100,此时周数据和月数据均为100;
到了1月2日,此时日数据还是100,周数据和月数据都变为200,依次类推
不知道你表结构了,我随便用个表来处理了:
select (@pro:=`userid`) as `userid`,date1,num,
@s:=if(@pro=`userid`,@var := @var + num,@var:=num) as 周数据
from (select * from table1 order by `userid` )b, (select @var := 0,@pro:= null, @s:=0) a
结果如下:
表名和字段换成你数据库中实际对应的即可
#周数据
select count(*) as weekNum from table
where YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1);
#月数据
select count(*) as monthNum from table
where DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
#周数据
select sum(num) as weekNum from table
where date between DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 0 DAY) and DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 6 DAY);
#月数据
select sum(num) as monthNum from table
where DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');