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.结果如下

 

posted @ 2019-05-31 14:48  袁麻麻  阅读(1461)  评论(0)    收藏  举报