统计一周订单量
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;