最近要實現一個,給定開始和結束日期,統計每天新增使用者數和新增訂單數的功能,如圖所示:
該開始比較蠢,採用的方法是:
- 先根據開始結束時間計算出中間的日期列表
- 遍歷列表,取當前日期和下一日期,查詢出在這段時間內新增加的使用者數和訂單數
可想而知,這種查詢的效率極低,所幸sql有一種sql語句恰好滿足了這種需求,比如我需要查詢訂單表每天新增的訂單數,可以這樣寫查詢語句:
- 以天為單位統計
SELECT DATE_FORMAT(created_at, “%Y-%m-%d” ) , COUNT( * ) FROM order_table WHERE status = ‘SUCCESS’ GROUP BY DATE_FORMAT( created_at, “%Y-%m-%d” ) ;
複製程式碼
- 以小時為單位統計
SELECT DATE_FORMAT(created_at, “%Y-%m-%d %H” ) , COUNT( * ) FROM order_table WHERE status = ‘SUCCESS’ GROUP BY DATE_FORMAT( created_at, “%Y-%m-%d %H” ) ;
複製程式碼
這樣就可以用一個查詢語句就能獲取所有所需的資料了,效率提高了很多很多。