mysql按月统计六个月内不同类型订单的成交金额

创建数据库

CREATE DATABASE test;

创建订单表

CREATE TABLE `t_order` (
`id` bigint(4) NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
`source` smallint(1) NOT NULL COMMENT '订单来源:1:商城 2:订单导入',
`status` smallint(1) NOT NULL COMMENT '订单状态:1: 待确认 2:已确认 3:已完成',
`order_amt` decimal(20,8) NOT NULL COMMENT '订单总金额',
`create_user_id` bigint(4) DEFAULT NULL COMMENT '创建人id',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';

此处订单表只涉及统计需要的字段,实际开发应该会复杂一些。

插入测试数据

INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('', '', '', '8000.00000000', '', '2018-01-01 22:12:41');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('', '', '', '9000.00000000', '', '2018-05-16 22:13:24');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('', '', '', '5000.00000000', '', '2018-01-17 22:14:00');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('', '', '', '12000.00000000', '', '2017-11-16 22:15:03');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('', '', '', '7000.00000000', '', '2018-04-18 22:15:43');

统计六个月内不同类型已完成状态订单的成交额

SELECT
six_month.`month` `month`,
source.source source,
IFNULL(SUM(o.order_amt), 0) orderAmt
FROM
(
SELECT DATE_FORMAT(now(), '%Y-%c') month FROM DUAL
UNION ALL SELECT DATE_FORMAT(date_sub(now(), INTERVAL 1 MONTH), '%Y-%c') month FROM DUAL
UNION ALL SELECT DATE_FORMAT(date_sub(now(), INTERVAL 2 MONTH), '%Y-%c') month FROM DUAL
UNION ALL SELECT DATE_FORMAT(date_sub(now(), INTERVAL 3 MONTH), '%Y-%c') month FROM DUAL
UNION ALL SELECT DATE_FORMAT(date_sub(now(), INTERVAL 4 MONTH), '%Y-%c') month FROM DUAL
UNION ALL SELECT DATE_FORMAT(date_sub(now(), INTERVAL 5 MONTH), '%Y-%c') month FROM DUAL
) six_month
CROSS JOIN (
SELECT 1 source FROM DUAL
union all
SELECT 2 source FROM DUAL
) source
LEFT JOIN t_order o ON o.source = source.source
AND DATE_FORMAT(o.create_time, '%Y-%c') = six_month.`month`
AND `status` = 3
GROUP BY
six_month.`month`,
source.source;

统计结果

从结果可以看出,统计出了最近六个月内每个月每一种订单类型的已完成状态的订单的成交额。

mysql按月统计六个月内不同类型订单的成交金额的更多相关文章

  1. 实现mysql按月统计的教程

    From: http://www.jbxue.com/db/758.html 实现mysql按月统计的教程   mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句? se ...

  2. mysql 按月统计但是有几个月没有数据,需要变成0

    创建现在倒过去的12个月的视图 CREATE VIEW `past_12_month_view` AS SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `month ...

  3. mysql按日/周/月统计

    一.mysql按日统计 ) count ' and start_time > '2017-06-28' group by days; 二.mysql按周统计 ) ' group by weeks ...

  4. mysql 时间戳 按周、日、月 统计方法 附 date格式

    create_time时间戳格式 SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY w ...

  5. MySQL按照月进行统计

    MySQL按照月进行统计 今天需要后台提供一个按月统计的API.所以查了一下SQL语句的实现方法. 按月统计SQL select date_format(createtime, '%Y-%m') as ...

  6. mysql按月,按日分组统计数据

    group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...

  7. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  8. echart报表插件使用笔记(二)--按月统计

    按月统计注冊人数 java类: package com.spring.controller; import java.io.IOException; import java.sql.Connectio ...

  9. SqlServer mssql 按月统计所有部门

    以订单统计为例,前端展示柱状图(Jquery统计): 表及主要字段描述如下:表名:Orders1.日期CreateTime2.金额Amount3.用户UserID 情况一:根据部门统计某一年每月销量( ...

随机推荐

  1. Executor Framework

    Why? look at the following 2 pieces of code for implementing a simple web server based on socket, ca ...

  2. day-14 回归中的相关系数和决定系数概念及Python实现

    衡量一个回归模型常用的两个参数:皮尔逊相关系数和R平方 一.皮尔逊相关系数 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pe ...

  3. opencv-学习笔记(3)

    opencv-学习笔记(3) 这章讲了 图像加法 opencv测试效率 IPYTHON测试效率 图像加法 cv2.add() 要求,两图片必须大小类型相同 然后是图像混合cv2.addWeighted ...

  4. Python3 小工具-僵尸扫描

    僵尸机的条件: 1.足够闲置,不与其他机器进行通讯 2.IPID必须是递增的,不然无法判断端口是否开放 本实验僵尸机选择的是Windows2003 from scapy.all import * im ...

  5. Java抽象与接口的区别

    Java抽象与接口的区别 答案方式一.简单来说,1.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 2.另外,实现接口的一定要实现接口里定义的所有 ...

  6. Python3 数据类型-元组

    Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 实例1(Python3.0+): tu ...

  7. 适合初学者的嵌入式Linux计划

    俗话说万事开头难,刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了,不知道自己究竟从哪里开始 ...

  8. 定点数(fixed-point number)

    定义 定点数(fixed-point number)就是小数点位置固定的数,也就是说,小数点后面的位数是固定的,比如要记录一笔账目,这些账目的数字都不会超过100,就可以使用2位小数位定点数来记录,比 ...

  9. Rescue(BFS时间最短 另开数组或优先队列)

    Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M ...

  10. Alpha 冲刺3

    队名:日不落战队 安琪(队长) 今天完成的任务 组织第三次站立式会议. 完成了个人信息前端界面. 明天的计划 草稿箱前端界面. 个人信息扩展界面框架. 还剩下的任务 回收站前端界面. 信息修改前端界面 ...