关于#sql#的问题:此时周数据和月数据均为100

如何用sql实现以下要求
:假如1月1日的日数据是100,此时周数据和月数据均为100;
到了1月2日,此时日数据还是100,周数据和月数据都变为200,依次类推

不知道你表结构了,我随便用个表来处理了:

img


实现SQL如下:

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

结果如下:

img

表名和字段换成你数据库中实际对应的即可

#周数据

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');