统计近七天数据,没有自动补0

mysql 统计近七天的数据 没有数据的天数自动补0

``## 没有补0 的数据`

SELECT
        COUNT(1) counts,
        DATE_FORMAT(h.alarm_time, '%Y-%m-%d') dataTime
        FROM
        location_alarm_history h
        LEFT JOIN hxl_location_user u ON h.card_id = u.CARD_NO  AND u.USER_TYPE IS NOT NULL
        LEFT JOIN sys_dict dc ON dc.value= u.USER_TYPE
        AND dc.type = 'user_type'
        WHERE
        DATE_FORMAT(h.alarm_time, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d')
        AND DATE_FORMAT(h.alarm_time, '%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 7 DAY), '%Y-%m-%d')
       
       GROUP BY DATE_FORMAT(h.alarm_time, '%Y-%m-%d')
  • 效果如下:
  • 在这里插入图片描述
  • 构建一个最近七天的结果集,然后和查询的结果集合使用IFNULL(expression, alt_value) 做为null
  • 赋值,代码如下:
SELECT a.click_date dayTime,ifnull(b.count,0) counts
        FROM
        (SELECT curdate() as click_date
        union all
        SELECT date_sub(curdate(), interval 1 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 2 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 3 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 4 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 5 day) as click_date
        union all
        SELECT date_sub(curdate(), interval 6 day) as click_date
        ) a LEFT JOIN (SELECT
        COUNT(1) count,
        DATE_FORMAT(h.alarm_time, '%Y-%m-%d') bDataTime
        FROM
        location_alarm_history h
        LEFT JOIN hxl_location_user u ON h.card_id = u.CARD_NO  AND u.USER_TYPE IS NOT NULL
        LEFT JOIN sys_dict dc ON dc.value= u.USER_TYPE
        AND dc.type = 'user_type'
        WHERE
        DATE_FORMAT(h.alarm_time, '%Y-%m-%d')  <= DATE_FORMAT(NOW(), '%Y-%m-%d')
        AND DATE_FORMAT(h.alarm_time, '%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 6 DAY), '%Y-%m-%d')
        GROUP BY DATE_FORMAT(h.alarm_time, '%Y-%m-%d') ) b ON a.click_date = b.bDataTime
        ORDER BY a.click_date asc
  • 效果如下:
  • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值