統計一週訂單量
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;