mysql 统计12月份数据,不足补0

SELECT a.month, IFNULL(b.onLineTotal, 0) AS onLineTotal, IFNULL(b.offLineTotal, 0) AS offLineTotal
        FROM (
            SELECT DATE_FORMAT(CURDATE(), '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 2 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 3 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 4 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 5 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 6 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 7 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 8 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 9 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 10 MONTH, '%m') AS MONTH
            UNION
            SELECT DATE_FORMAT(CURDATE() - INTERVAL 11 MONTH, '%m') AS MONTH
        ) a
            LEFT JOIN (
                SELECT DATE_FORMAT(t.create_time, '%m') AS MONTH,
                    COUNT(CASE WHEN online = 1 THEN online END) AS onLineTotal,
                    COUNT(CASE WHEN online = 0 THEN online END) AS offLineTotal
                FROM device t
                WHERE is_delete = 0
                    AND DATE_FORMAT(create_time, '%Y-%m') > DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 12 MONTH), '%Y-%m')
                GROUP BY MONTH
            ) b
            ON a.month = b.month
        ORDER BY a.month ASC

获取两个日期内的所有日期

SELECT * FROM (SELECT ADDDATE('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date FROM
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 
 7 UNION SELECT 8 UNION SELECT 9) t0,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 
 7 UNION SELECT 8 UNION SELECT 9) t1,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 
 7 UNION SELECT 8 UNION SELECT 9) t2,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 
 7 UNION SELECT 8 UNION SELECT 9) t3,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 
 7 UNION SELECT 8 UNION SELECT 9) t4) v WHERE selected_date BETWEEN '2012-02-10' AND '2012-02-15'

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值