按天统计数据,如果当天没有记录,则统计为0

来源:互联网 发布:python教程3.6.2 编辑:程序博客网 时间:2024/06/05 18:11
    今天做一个统计需求,按天统计这张表的记录数,按照pay_month和格式化之后的payment_time来分组,这张表大致数据如下


    按照pay_month和格式化之后的payment_time分组之后,数据如下




    我需要统计的是10天前到今天的数据,但就pay_month=1的数据来讲,只有2,3,4,7号有数据。而我想要没有数据的那一天同样统计出来并用0来填充。
     第一反应是用left join,但由于mysql没有oracle的connect by level,只能用一张数据条数绝对大于10的表来代替select level from dual connect by level < 10;我就选了tb_order这张表本身
SELECT @cdate := date_add(@cdate,interval -1 day) days from (SELECT @cdate := CURDATE() from tb_order limit 10) t1

   

    再left join需要分组的表
select t2.days,t3.begin_day,t3.end_day,t3.pay_month, t3.pay_day,IFNULL(t3.score,0) total_score from (SELECT @cdate := date_add(@cdate,interval -1 day) days from (SELECT @cdate := CURDATE() from tb_order limit 10) t1) t2LEFT JOIN(select CURDATE() end_day,PAY_MONTH, date_add(CURDATE(),interval -10 day) begin_day, date_format(PAYMENT_TIME,'%Y-%m-%d') pay_day, count(1) score from tb_orderwhere ORDER_STATUS='ORDER_USED' and CURDATE()<=date_add(date_format(PAYMENT_TIME,'%Y-%m-%d'),interval 10 day)group by PAY_MONTH,date_format(PAYMENT_TIME,'%Y-%m-%d')) t3on t2.days=t3.pay_day

    最终达到的结果如下:



    正真需要的只有days和total_score两列,这样就算是完成了。
  • 大小: 25.5 KB
  • 大小: 25 KB
  • 大小: 14.4 KB
  • 大小: 16.7 KB
  • 查看图片附件
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿8天没大便怎么办 新生儿2天没大便怎么办 新生儿4天没大便怎么办 2岁宝宝便秘严重怎么办 婴儿7天没有大便怎么办 新生儿6天没大便怎么办 大便带鲜血 不疼怎么办 宝宝发烧到39度怎么办 肛裂大便出鲜血怎么办 拉大便有血怎么办啊 长痔疮拉大便血怎么办 病人卧床太久不解大便怎么办 宝宝拉泡沫便便怎么办 孩子拉肚子怎么办呢有好办法吗 2岁宝宝大便带血怎么办 十个月宝宝肛裂怎么办 大便时拉出血怎么办啊 2岁宝宝大便干燥怎么办 5岁儿童大便干燥怎么办 九个月宝宝平血怎么办 6个月宝宝肛裂怎么办 3岁儿童大便干燥怎么办 外痔疮出血了该怎么办 外痔疮流血了怎么办呢 外痔疮破了出血怎么办 拉稀拉的肛门疼怎么办 大人屁股沟裂了怎么办 肛门痛大便有血怎么办 肛裂出血几天了怎么办 肛裂拉屎出血该怎么办 孕期肛裂出血该怎么办 老人大便拉不出来怎么办 拉屎拉的屁眼疼怎么办 拉屎堵在肛门口怎么办 上火拉大便有血怎么办 7岁儿童大便带血怎么办 阴炎用药后出血怎么办 孕晚期大便拉不出来怎么办 想拉屎拉不出来怎么办 4岁幼儿大便干燥怎么办 2岁幼儿大便干燥怎么办