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