统计本年本月本星期数据

 因为需要统计本年本月本星期数据,并且要求展现每天的具体量,当某一天没有数据时,就会变成1号 23,2号 22,4号 12

中间三号没有数据的问题,所以这篇文章参考了网上的方法,实现1号 23,2号 22,3号0,4号 12

查询今年数据

select * from Wx_UserInfo where YEAR(CreateTime)=YEAR(NOW()) and IsDeleted=1
查询本月的数据
SELECT count(1) FROM Wx_UserInfo WHERE DATE_FORMAT( CreateTime, '%Y%m' ) = DATE_FORMAT( NOW() , '%Y%m' ) and IsDeleted=1

查询这个星期的数据

select count(1) from Wx_UserInfo where to_days(CreateTime) = to_days(now()) and IsDeleted=1

查询当日的数据

select count(1) from Wx_UserInfo where to_days(CreateTime) = to_days(now()) and IsDeleted=1

 

CREATE TABLE num (i int);-- 创建一个表用来储存0-9的数字

INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的数字,方便以后计算时间

CREATE TABLE `calendar ` (
  `datelist` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


 -- 生成一个存储日期的表,datalist是字段名

INSERT INTO calendar (datelist) SELECT
    adddate(
        (   -- 这里的起始日期,你可以换成当前日期
            DATE_FORMAT("2016-12-01", '%Y-%m-%d') ----若写成这种格式,DATE_FORMAT("2016-12", '%Y-%m'),但时间不会累加,不知道为啥
        ),
       INTERVAL  numlist.id  MONTH
    ) AS `date`
FROM
    (
        SELECT
            n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
        FROM
            wx_num n1
        CROSS JOIN wx_num AS n10
        CROSS JOIN wx_num AS n100
        CROSS JOIN wx_num AS n1000
        CROSS JOIN wx_num AS n10000
    ) AS numlist;


update calendar set datelist=left(datelist,7)---只取前7位,即类似2017-02  只到月份。  这里说明下为啥calendar 表datelist字段类型为啥是varchar,为了方便截取,若是date,则截取update就有问题。

---按月统计 员工的销售数量
SELECT cal.datelist , IF(buyTotal IS NULL , 0, buyTotal) buyTotal,IF(activateTotal IS NULL , 0, activateTotal) activateTotal
FROM   
(
select 
FROM_UNIXTIME(oi.pay_time, '%Y-%m') months,
count(case WHEN (oi.pay_status=1 and oi.order_status!=1) then 1 else NULL end ) buyTotal,
count(case WHEN (oi.syn_status=1 and oi.order_status!=1) then 1 else null end ) activateTotal
from order_info oi
where emp_no='cc0075'
group by months 
) order_info    
  
RIGHT JOIN calendar cal on order_info.months = cal.datelist 
where calendar.datelist<='2017-03' ---这个时间可以写也可以不写
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值