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