mysql中统计字段中不同值的数量并分时间显示


1.根据工作需要,需要统计一个用户中当月订单每天发送状态情况,下面是这表字段

表中字段很多,当然我们也不需要这么多字段,只需要用户字段user_id、状态字段status、接收时间字段create_time、数量字段delivered_part

2.下面是sql语句

SELECT 
    SUM(tos.delivered_part) AS total,
    SUM(CASE tos.`status` WHEN 100 THEN tos.delivered_part ELSE 0 END) AS successNumber, 
    SUM(CASE tos.`status` WHEN -1 THEN tos.delivered_part ELSE 0 END) AS errorNumber,
    SUM(CASE WHEN  tos.`status` != -1 AND tos.`status` != 100 THEN tos.delivered_part 
      WHEN 0 THEN tos.delivered_part ELSE 0 END) AS otherNumber,
      DATE_FORMAT(tos.`create_time`,'%Y-%m-%d') AS 日期 
      FROM t_sms_order tos WHERE tos.user_id = 1410 AND tos.`create_time` BETWEEN '2019-03-31 23:59:59' AND '2019-04-30 23:59:59'
GROUP BY DATE_FORMAT(tos.`create_time`,'%Y-%m-%d');

 讲解下四个求和语句sum的说明和一个date_format:

  第一个sum:求字段delivered_part里面值的和

  第二个sum:求字段delivered_part状态是100,值的和

  第三个sum:求字段delivered_part状态是-1,值的和

  第四个sum:求字段delivered_part状态不是-1且状态不是100,值的和

  date_format:根据时间字段create_time求每天的数量

最后加上条件然后利用日期分组

3.结果如下

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM