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

Wesley13
• 阅读 811

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 ('1', '1', '2', '8000.00000000', '1', '2018-01-01 22:12:41');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('2', '2', '3', '9000.00000000', '1', '2018-05-16 22:13:24');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('3', '1', '3', '5000.00000000', '1', '2018-01-17 22:14:00');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('4', '1', '3', '12000.00000000', '2', '2017-11-16 22:15:03');
INSERT INTO `t_order` (`id`, `source`, `status`, `order_amt`, `create_user_id`, `create_time`) VALUES ('5', '2', '3', '7000.00000000', '2', '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按月统计六个月内不同类型订单的成交金额

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这