MySQL查询 每年 每月 每日 订单数和订单金额

mysql函数

1. FROM_UNIXTIME()函数时间戳转换时间

SELECT FROM_UNIXTIME(1588238359) AS 时间;

å¨è¿éæå¥å¾çæè¿°

2. year()获取时间的年份

SELECT YEAR('2020-04-30 17:19:19') AS 年;

å¨è¿éæå¥å¾çæè¿°

3. month()获取时间的月份

SELECT MONTH('2020-04-30 17:19:19') AS 月;

å¨è¿éæå¥å¾çæè¿°

4. day()获取时间的日

SELECT DAY('2020-04-30 17:19:19') AS 日;

å¨è¿éæå¥å¾çæè¿°

下面查询统计 "每年" 的订单数和订单总金额(createtime在数据库为时间戳)

-- 下面查询统计每年的订单(createtime在数据库为时间戳)
-- 订单数量
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,COUNT(*) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime));
-- 总金额
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,SUM(price) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime));

 下面查询统计 "每月" 的订单数和订单总金额(createtime在数据库为时间戳)

-- 下面查询统计每月的订单(createtime在数据库为时间戳)
-- 订单数量
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,MONTH(FROM_UNIXTIME(createtime)) 月,COUNT(*) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime)),MONTH(FROM_UNIXTIME(createtime));
-- 总金额
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,MONTH(FROM_UNIXTIME(createtime)) 月,SUM(price) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime)),MONTH(FROM_UNIXTIME(createtime));

下面查询统计 "每日" 的订单数和订单总金额(createtime在数据库为时间戳)

-- 下面查询统计每日的订单(createtime在数据库为时间戳)
-- 订单数量
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,MONTH(FROM_UNIXTIME(createtime)) 月,DAY(FROM_UNIXTIME(createtime)) 日,COUNT(*) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime)),MONTH(FROM_UNIXTIME(createtime)),DAY(FROM_UNIXTIME(createtime));
-- 总金额
SELECT YEAR(FROM_UNIXTIME(createtime)) 年,MONTH(FROM_UNIXTIME(createtime)) 月,DAY(FROM_UNIXTIME(createtime)) 日,SUM(price) FROM `order` WHERE 1 GROUP BY YEAR(FROM_UNIXTIME(createtime)),MONTH(FROM_UNIXTIME(createtime)),DAY(FROM_UNIXTIME(createtime));

例1:统计每月销售总金额

说明:

  1. 字段createTime 当前系统时间格式为yyyy-MM-dd HH:mm:ss;
  2. 字段 price 销售额;
  3. CASE MONTH(createTime) WHEN '8' THEN price ELSE 0 end:获取字段createTime时间的月份,当月份为8月,获取8月所有的销售额,若没有销售额销售额则为0;
  4. SUM(CASE MONTH(createTime) WHEN '8' THEN price ELSE 0 END):将8月所有的销售额进行合计;
  5. IFNULL(SUM(CASE MONTH(createTime) WHEN '8' THEN price ELSE 0 END), 0) AS 八月份  :类似三元运算符,IFNULL(当月总销售额,0),假如销售额不为 NULL,则 IFNULL() 的返回值为当月总销售额,否则为0,AS别名为'八月份';
  6. #{year}:要查询的年份;
select 
	IFNULL(SUM(CASE MONTH(createTime) WHEN '1' THEN price ELSE 0 END), 0) AS 一月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '2' THEN price ELSE 0 END), 0) AS 二月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '3' THEN price ELSE 0 END), 0) AS 三月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '4' THEN price ELSE 0 END), 0) AS 四月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '5' THEN price ELSE 0 END), 0) AS 五月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '6' THEN price ELSE 0 END), 0) AS 六月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '7' THEN price ELSE 0 END), 0) AS 七月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '8' THEN price ELSE 0 END), 0) AS 八月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '9' THEN price ELSE 0 END), 0) AS 九月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '10' THEN price ELSE 0 END), 0) AS 十月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '11' THEN price ELSE 0 END), 0) AS 十一月份,
	IFNULL(SUM(CASE MONTH(createTime) WHEN '12' THEN price ELSE 0 END), 0) AS 十二月份
FROM `order`
WHERE YEAR(createTime)=#{year};

当年每月销售总额结果为:

例2:统计每月销售总金额

-- 统计每月销售总金额
SELECT 
  SUM(price),
  cTime 
FROM
  (SELECT 
    oid,
    price,
    DATE_FORMAT(createtime, '%y-%c') cTime 
  FROM
    `order`) AS o 
GROUP BY cTime ;

当年每月销售总额结果为:

 

转载请注明出处:BestEternity亲笔。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值