1. 程式人生 > 實用技巧 >MySQL如何按日期獲取指定時間段內訂單總數

MySQL如何按日期獲取指定時間段內訂單總數

需求:如何對訂單支付記錄表,獲取指定日期之間,每天的的訂單分佈,比如想獲取 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;

最後查詢結果如下: