需求:如何對訂單支付記錄表,獲取指定日期之間,每天的的訂單分布,比如想獲取 2020-08-01到 2020-09-25,每日的訂單分布。
如下表結構:
思路如下:
主要是添加時間字段add_time,進行處理,變成日期格式; 然后通過BETWEEN操作符在 WHERE 子句中使用,作用是選取介於兩個值之間的數據范圍,來匹配日期范圍; 接下來通過CASE WHEN exc THEN 1 ELSE 0 END語句進行分類查詢獲取訂單分布情況; 最后通過GROUP BY 對新增處理后的時間time進行分組,按天返回每日訂單,和ORDER BY time DESC降序;
SQL寫法如下:
SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') AS time, COUNT(1) AS '總單量(訂單總數)', SUM( CASE WHEN pay_status=1 THEN 1 ELSE 0 END ) AS '已支付(訂單總數)', SUM( CASE WHEN pay_status=1 THEN money ELSE 0 END ) AS '已收款(訂單總價)', SUM( CASE WHEN pay_status=0 THEN 1 ELSE 0 END ) AS '已支付(訂單總數)', SUM( CASE WHEN pay_status=0 THEN money ELSE 0 END ) AS '待支付(訂單總數)' FROM `pw_pay_log` WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN '2020-08-18' AND '2020-09-11' GROUP BY time ORDER BY time DESC;
最后查詢結果如下: