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;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值