/教程/编程/ mysql 分组统计总数没有的默认为0

mysql 分组统计总数没有的默认为0

编程2432019-09-26

后台生成近7天的图表数据如下图

数据库查询近7天订单数据

select FROM_UNIXTIME( pay_time, '%Y-%m-%d' ) day, count(*) as total from t_order where pay_status=1 and pay_time BETWEEN 1568908800 and 1569513599 GROUP BY day

查询结果发现天数不是连着的

那怎么一条语句就查询出近7天的数据  如果当天没有订单则补0

先生成一条7天日期的数据

select @cdate := date_add( @cdate, INTERVAL - 1 day ) day from (select @cdate := date_add( CURDATE(), INTERVAL + 1 day ) from t_order ) t0  LIMIT 7

t_order 替换成你库中任意存在的表

然后用订单表和这个表关联做统计就可以了 

完整sql

select t1.day,COUNT( t2.order_id ) '订单量' from (select @cdate := date_add( @cdate, INTERVAL - 1 day ) day from (select @cdate := date_add( CURDATE(), INTERVAL + 1 day ) from t_order ) t0  LIMIT 7 ) t1 LEFT JOIN ( select FROM_UNIXTIME( pay_time, '%Y-%m-%d' ) day, order_id from t_order where pay_status=1 ) t2 ON t2.day = t1.day GROUP BY t1.day

标签: MySQL 

有什么新鲜事想告诉大家?

发表