zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    力扣236题、235(二叉树最近公共祖先)
    力扣222题(完全二叉树的节点个数)
    力扣130题、990题(并查集算法)
    力扣855题(考场就座)
    力扣659题(分割数组为连续子数组)
    力扣435题(区间调度问题)
    【转】编程之:EXPORT_SYMBOL使用
    【转】shell工具之:常用shell脚本命令详细
    【转】vim工具命令之:添加行号和删除行号
    BUG之【虚拟机报错】:Centos出现 rm: cannot remove x: Read-only file system 的总结
  • 原文地址:https://www.cnblogs.com/Mr-Cxy/p/6212446.html
Copyright © 2011-2022 走看看