Mysql統計每天 每週 每年訂單量

統計一週訂單量

SELECT DATE(create_date) as date,COUNT(1) as count FROM orders WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(create_date) GROUP BY date;

sql 語句解析

  • date(create_date): 將日期格式化爲 2000-01-01這種格式
  • curdate() :獲取當前日期 2020-06-30 等同於 date(now())
  • date_sub(curdate(), interval 7 day): 獲取7天前的日期

但該語句不會顯示沒有訂單的日期,參考其他博客將sql優化爲如下

select a.date,ifnull(b.count,0) as count
from (
    SELECT curdate() as date
    union all
    SELECT date_sub(curdate(), interval 1 day) as click_date
    union all
    SELECT date_sub(curdate(), interval 2 day) as click_date
    union all
    SELECT date_sub(curdate(), interval 3 day) as click_date
    union all
    SELECT date_sub(curdate(), interval 4 day) as click_date
    union all
    SELECT date_sub(curdate(), interval 5 day) as click_date
    union all
    SELECT date_sub(curdate(), interval 6 day) as click_date
) a left join (
  select date(create_date) as createdate, count(*) as count
  from orders
  group by date(create_date)
) b on a.date = b.createdate;

統計每年的訂單量

SELECT YEAR(create_date) as year,COUNT(1) as count FROM orders  GROUP BY year;

統計今年每個月的訂單量

SELECT MONTH(create_date) as month,COUNT(1) as count FROM orders WHERE YEAR(create_date) = YEAR(NOW()) GROUP BY month ORDER BY month;

統計今年每週的訂單量

SELECT WEEK(create_date) as week,COUNT(1) as count FROM orders WHERE YEAR(create_date) = YEAR(NOW()) GROUP BY week ORDER BY week;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章