MySQL_订单类型细分_20161222
#目前在做一个各城市日订单角度的对比分析,因此需要对订单类型进行一下规整。由于App上产品活动许多,查询了多个表,将订单类型规则进行了统一,优惠券和满减券不能同时使用,创建的这两个表都是以订单ID为key,赠品在毛利表中销售额为0且成本额>0
但是赠品和优惠券使用会有交叉,因此没法和优惠券、满减券进行纵向合并
#订单ID 14天明细
SELECT a1.*
,CASE WHEN a2.优惠券ID IS NULL THEN '正常订单' ELSE a2.优惠类 END AS 是否正常订单
,CASE WHEN a2.优惠券ID IS NULL THEN '正常订单' WHEN a2.优惠类='专项活动'THEN '专项活动' ELSE '其他优惠券' END AS 专题
,a2.使用时间,a2.优惠券ID,a2.优惠券名称,a2.优惠额
,CASE WHEN a1.订单日期=a2.使用时间 THEN '当天' ELSE '非当天' END AS 即时情况
,CASE WHEN a3.订单ID IS NULL THEN '无' ELSE '有' END AS 是否有赠品,a3.赠品额
FROM (
SELECT 城市,用户ID,用户名称,DATE(订单日期) AS 订单日期,订单ID,销售员,SUM(金额) AS 金额
,CASE WHEN SUM(金额)>=4000 THEN '【4000元以上】' WHEN SUM(金额)>=3000 THEN '【3000元以上】' WHEN SUM(金额)>=2000 THEN '【2000元以上】' WHEN SUM(金额)>=1000 THEN '【1000元以上】' WHEN SUM(金额)>=500 THEN '【5000元以上】' ELSE '【500元以下】' END AS 金额区间
FROM `a003_order`
WHERE 金额>0 AND 订单日期>=DATE_ADD(CURRENT_DATE,INTERVAL -14 DAY) AND 订单日期<CURRENT_DATE #AND 城市='北京'
GROUP BY 订单ID
) AS a1
LEFT JOIN (#优惠券满减合并
(#优惠券
SELECT a.*
FROM (
SELECT 城市,DATE(使用时间) AS 使用时间,用户ID,订单号 AS 订单ID,SUM(优惠券金额) AS 优惠额,`优惠券ID`,`优惠券名称`,`优惠券类别`
,CASE WHEN (优惠券类别='兑换优惠劵(赠优惠劵)' OR 优惠券类别='客服专用券' OR 优惠券类别='满赠优惠券(赠优惠券)') AND 优惠券名称 LIKE '%无门槛%' THEN '全品类可用'
WHEN 优惠券类别='注册优惠券' AND 优惠券名称 LIKE '%注册%无门槛%' THEN '全品类可用'
WHEN 优惠券类别='兑换优惠劵(赠优惠劵)' AND 优惠券名称 LIKE '%超值兑换券%' THEN '专项活动' ELSE 优惠券类别 END AS 优惠类
FROM `a016_order_customercoupon_xref`
WHERE 使用时间>=DATE_ADD(CURRENT_DATE,INTERVAL -14 DAY) AND 使用时间<CURRENT_DATE
GROUP BY 订单号
ORDER BY 城市,DATE(使用时间),SUM(优惠券金额) DESC
) AS a
ORDER BY 城市,使用时间,优惠券名称)
UNION ALL (#满减
SELECT b.*
FROM (#满减券的ID 不同品类一个订单可以使用多个ID
SELECT 城市,DATE(下单时间) AS 使用时间,用户ID,订单ID,SUM(满减金额) AS 优惠额,`活动ID` AS 优惠券ID,活动描述 AS 优惠券名称,'满减' AS 优惠券类别,'满减' AS 优惠类
FROM `a036_order_promotion_xref`
WHERE 下单时间>=DATE_ADD(CURRENT_DATE,INTERVAL -14 DAY) AND 下单时间<CURRENT_DATE
GROUP BY 订单ID
) AS b
ORDER BY 城市,使用时间,优惠券名称
)
) AS a2 ON a1.订单ID=a2.订单ID
LEFT JOIN (#05赠品包含后台满赠模块 包含买一赠一 满赠活动 SKUID in (866040,878976) 退包装物的订单 也包含在赠品中了
SELECT 城市,用户ID,订单号 AS 订单ID,SUM(成本额) AS 赠品额
FROM `a005_account`
WHERE 销售额=0 AND 成本额>0 AND 订单日期>=DATE_ADD(CURRENT_DATE,INTERVAL -14 DAY) AND 订单日期<CURRENT_DATE AND 类型<>'退货'
GROUP BY 订单号
) AS a3 ON a1.订单ID=a3.订单ID
ORDER BY 城市,用户ID,订单ID,金额 DESC
MySQL_订单类型细分_20161222的更多相关文章
- 112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 经过了一个双十一后,天天面对的都是订单.于是有了关于销售订单按sku类型分类的需求. 说明:(暂且不讨论这样分类 ...
- mysql按月统计六个月内不同类型订单的成交金额
mysql按月统计六个月内不同类型订单的成交金额 创建数据库 CREATE DATABASE test; 创建订单表 CREATE TABLE `t_order` ( `id` ) NOT NULL ...
- 【SAP业务模式】之ICS(六):发票输出类型
这篇开始主要讲述发票输出类型: 首先我们新建一个发票类型,用于公司间的发票MIV,而标准的发票类型还是F2保持不变: 一.新建发票类型: 目录:SPRO-销售与分销-出具发票-开票凭证-定义出具发票类 ...
- SAP 订单状态跟踪
*&--------------------------------------------------------------------- *& Program name: *& ...
- ABAP 订单转交货单
*& Report ZSDR025 *& *&---------------------------------------------------------------- ...
- SAP公司间采购订单关联交货单报表源代码(自己收藏)
SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...
- PP生产订单创建、下达、报工、收货、投料
转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...
- 调用SAP函数创建寄售退货订单的时候报错:业务对象 BUS2032 是销售订单,销售凭证类别 H 是退货。
RE.KR订单类型用BAPI_CUSTOMERRETURN_CREATE 其他用BAPI_SALESORDER_CREATEFROMDAT2
- [SAP ABAP开发技术总结]SD销售订单定价过程
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- CocoaPods本身版本的更新
sudo gem update --system sudo gem install cocoapods pod setup pod --version sudo gem install cocoapo ...
- 提供VR定制开发、AR定制开发(VR游戏定制、应用定制)
设置输出路径 添加烘培输出的贴图类型 添加“LightingMap”类型 设置烘培贴图大小和目标贴图位置为“自发光” 设置烘培材质,选择“输出到源” 点击“渲染”即可 24.标准材质贴图的烘培光影处理 ...
- caffe-mnist别手写数字
[来自:http://www.cnblogs.com/denny402/p/5685909.html] 整个工作目录建在:/home/ubunt16041/caffe/examples/abc_mni ...
- C++ 实现Range类,用于常规遍历
PYTHON的Range类非常好用,所以用C++来简单实现下: // 实现Range类,用于遍历 // #include <string> class Range { public: / ...
- 黑马程序员_ Objective-c 面向对象笔记详解
1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...
- jquery的blur之后,focus获取不到焦点的解决办法
一:很多童鞋可能会遇到这种情况: jquery的blur之后,focus获取不到焦点. 二:使用场景: 用户填写信息的时候,若邮箱为空,则提示 请填写邮箱,并将光标置于填写邮箱的文本框里,方便用户的再 ...
- asp.net 手工调用 WS(Get)方法:
asp.net 手工调用 WS(Get)方法: 通过手工HttpWebRequest,HttpWebResponse来模拟调用.核心代码:string strurl="http://loca ...
- Python-3 语法
#1 Tab键: 1)控制缩进 2)IDLE智能补全 #2 =等号: 1)=:表示赋值 2)==:表示判断 #3 流程图: print('..........小甲鱼_1..........') tem ...
- 牛客网程序员面试金典:1.2——原串翻转(java实现)
问题描述: 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniString,请返回一个string,为翻转后的字符串. ...
- Tableau地图移动
最近又回归写报表,新的工具使用Tableau,这次要做一个地图,当地图导入之后一直无法能够较好的移动地图,百度也找不到资料. 每次点击一下省份或者利润就是放大或者缩小,很不好移动位置. 研究了一下很简 ...