活动内容: 单笔订单满6个及以上产品(帽子、浴巾除外),金额满赠300元,即赠送300-10元(除帽子、浴巾外)优惠券一张。
需求数据:满足条件的用户ID
活动时间:11.2-11.5(4天)
活动规则:
① 使用无忧券ID908-913的商户即便满足条件也不参与此次活动
② 参与秒杀、满赠的活动的商户可以参与此次活动
③ 11.2日、3日数据4日下午发放;11、4日、5日订单7日发放

1.我们可以给他一个最细的明细,每个订单每个产品下单的情况

SELECT a1.城市,a1.用户ID,b.用户名称,b.用户地址,b.联系电话,DATE(订单日期) AS 订单日期,a1.订单ID,a1.销售员,a1.产品ID,a1.产品名称,SUM(a1.金额) AS 金额
FROM `a003_order` AS a1
LEFT JOIN `a001_resterant` AS b ON a1.用户ID=b.用户ID
WHERE a1.城市='济南' AND a1.订单日期>="2016-11-02" AND a1.订单日期<"2016-11-06" AND a1.金额>0 AND (a1.产品名称 NOT LIKE "%帽子%" OR a1.产品名称 NOT LIKe"%浴巾%" )
GROUP BY a1.订单ID,a1.产品ID

2、给他一个订单汇总,其中订单后在跟随使用优惠券的情况

SELECT a2.城市,a2.用户ID,a2.用户名称,a2.用户地址,a2.联系电话,a2.订单日期,a2.订单ID,a2.销售员,COUNT(a2.产品ID) AS 产品数,SUM(a2.金额) AS 订单额,
CASE WHEN COUNT(a2.产品ID)>=6 AND SUM(a2.金额)>=300 THEN "产品数>=6&单笔订单大于300" ELSE NULL END AS 标识,a4.优惠券ID,a4.优惠券名称,a4.优惠券金额
FROM (
SELECT a1.城市,a1.用户ID,b.用户名称,b.用户地址,b.联系电话,DATE(订单日期) AS 订单日期,a1.订单ID,a1.销售员,a1.产品ID,a1.产品名称,SUM(a1.金额) AS 金额
FROM `a003_order` AS a1
LEFT JOIN `a001_resterant` AS b ON a1.用户ID=b.用户ID
WHERE a1.城市='济南' AND a1.订单日期>="2016-11-02" AND a1.订单日期<"2016-11-06" AND a1.金额>0 AND (a1.产品名称 NOT LIKE "%帽子%" OR a1.产品名称 NOT LIKE
"%浴巾%" )
GROUP BY a1.订单ID,a1.产品ID
) AS a2
LEFT JOIN (#未使用优惠券ID 908到913的用户订单
SELECT a3.用户ID,a3.订单号,a3.优惠券ID,a3.优惠券名称,SUM(优惠券金额) AS 优惠券金额
FROM `a016_order_customercoupon_xref` AS a3
WHERE a3.城市="济南" AND a3.使用时间>="2016-11-02" AND a3.使用时间<"2016-11-06" AND (a3.优惠券ID<908 OR a3.优惠券ID>913)
GROUP BY a3.订单号
) AS a4 ON a4.订单号=a2.订单ID
GROUP BY a2.订单ID

3、最后对达标的餐馆再进行汇总group by    having 条件筛选单笔订单符合条件的

SELECT a.城市,a.用户ID,a.用户名称,a.用户地址,a.联系电话,c.销售员,SUM(a.订单额) AS 4天内订单额,COUNT(a.订单ID) AS 4天内订单数,
CASE WHEN SUM(a.订单额)>=300 THEN "10元(除帽子、浴巾外)优惠券一张" ELSE NULL END AS 赠送优惠券
FROM (
SELECT a2.城市,a2.用户ID,a2.用户名称,a2.用户地址,a2.联系电话,a2.订单日期,a2.订单ID,a2.销售员,COUNT(a2.产品ID) AS 产品数,SUM(a2.金额) AS 订单额,
CASE WHEN COUNT(a2.产品ID)>=6 AND SUM(a2.金额)>=300 THEN "产品数>=6&单笔订单大于300" ELSE NULL END AS 标识,a4.优惠券ID,a4.优惠券名称,a4.优惠券金额
FROM (
SELECT a1.城市,a1.用户ID,b.用户名称,b.用户地址,b.联系电话,DATE(订单日期) AS 订单日期,a1.订单ID,a1.销售员,a1.产品ID,a1.产品名称,SUM(a1.金额) AS 金额
FROM `a003_order` AS a1
LEFT JOIN `a001_resterant` AS b ON a1.用户ID=b.用户ID
WHERE a1.城市='济南' AND a1.订单日期>="2016-11-02" AND a1.订单日期<"2016-11-06" AND a1.金额>0 AND (a1.产品名称 NOT LIKE "%帽子%" OR a1.产品名称 NOT LIKE
"%浴巾%" )
GROUP BY a1.订单ID,a1.产品ID
) AS a2
LEFT JOIN (#未使用优惠券ID 908到913的用户订单
SELECT a3.用户ID,a3.订单号,a3.优惠券ID,a3.优惠券名称,SUM(优惠券金额) AS 优惠券金额
FROM `a016_order_customercoupon_xref` AS a3
WHERE a3.城市="济南" AND a3.使用时间>="2016-11-02" AND a3.使用时间<"2016-11-06" AND (a3.优惠券ID<908 OR a3.优惠券ID>913)
GROUP BY a3.订单号
) AS a4 ON a4.订单号=a2.订单ID
GROUP BY a2.订单ID
HAVING COUNT(a2.产品ID)>=6 AND SUM(a2.金额)>=300
) AS a
LEFT JOIN `a003b_order_item` AS c ON c.用户ID=a.用户ID
GROUP BY a.用户ID
ORDER BY SUM(a.订单额) DESC

这样数据对起来也比较方便 可以很方便的看一个用户是否是满足条件达标

MySQL 单笔订单满6个及以上产品且金额>=300赠送优惠券_20161103的更多相关文章

  1. MySQL_活动期间单笔订单最高的且满600元 判别是重激活客户还是10月注册客户_20161031

    将29号和30号两个需求放到一个表当中 首先都满足在10.29到31号之间单笔订单最高的且满600元 数据结构为一个用户一个订单ID 一行一行的 上面是第一个表 我们当做主表 a 第二个表 我们找注册 ...

  2. MySQL活动期间订单满600元并且在活动日期之前超过30天没有下过单_20161030

    计算 活动期间订单满600元并且在活动日期之前超过30天没有下过单 首先拿到这个需求,首先需要明确活动日期区间 10.29-10.31,其次要取这个时间段内某天订单额最高的那天及订单额,再次需要判断这 ...

  3. mysql优化---订单查询优化:视图优化+索引创建

    订单的表结构采用了垂直分表的策略,将订单相关的不同模块的字段维护在不同表中 在订单处理这个页面,需要查询各种维度, 因此为了方便查询创建了v_sale_order视图(老版本) drop view v ...

  4. 记一次mysql千万订单汇总查询优化

    公司订单系统每日订单量庞大,有很多表数据超千万.公司SQL优化这块做的很不好,可以说是没有做,所以导致查询很慢. 正题 节选某个功能中的一句SQL EXPLAIN 查看执行计划 EXPLAIN + S ...

  5. mysql优化---订单查询优化(1):视图优化+索引创建

    订单的表结构采用了垂直分表的策略,将订单相关的不同模块的字段维护在不同表中 在订单处理这个页面,需要查询各种维度, 因此为了方便查询创建了v_sale_order视图(老版本) drop view v ...

  6. mysql优化---订单查询优化:异步分页处理

    订单分页查询: 老的代码是顺序执行查询数据和计算总记录数,但是如果条件复杂的话(比如关联子表)查询的时间要超过20s种 public static PagedList<Map<String ...

  7. mysql滑动订单问题

    先根据以下代码来创建表MonthlyOrders并导入一定的数据 CREATE TABLE MonthlyOrders( ordermonth DATE, ordernum INT UNSIGNED, ...

  8. mysql cpu 100% 满 优化方案

    解决MySQL CPU占用100%的经验总结 - karl_han的专栏 - CSDN博客 https://blog.csdn.net/karl_han/article/details/5630782 ...

  9. mysql cpu 100% 满 优化方案 解决MySQL CPU占用100%的经验总结

    下面是一些经验 供参考 解决MySQL CPU占用100%的经验总结 - karl_han的专栏 - CSDN博客 https://blog.csdn.net/karl_han/article/det ...

随机推荐

  1. xml.etree.ElementTree模块的封装

    转载:https://www.cnblogs.com/hongten/p/hongten_python_xml_etree_elementtree.html 1 # -*- coding: utf-8 ...

  2. jdk并发工具包之锁

    1.cynchronized扩展:可重锁入ReentrantLock ReentrantLock是通过cas算法实现的 RenntrantLock lock=new ReentrantLock(); ...

  3. 让uboot的tftp支持上传功能

    转载:http://blog.chinaunix.net/uid-20737871-id-2124122.html uboot下的tftp下载功能是非常重要和常见的功能.但是偶尔有些特殊需求的人需要使 ...

  4. Druid——阿里巴巴的开源项目(关于数据库连接、监控)

    相关文章 0.Druid首页——jdbc连接池,监控组件 1.阿里巴巴的开源项目Druid(关于数据库连接) 2.ITeye谈Druid 3.DBCP(DataBase connection pool ...

  5. 【BZOJ2229】[Zjoi2011]最小割 最小割树

    [BZOJ2229][Zjoi2011]最小割 Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有 ...

  6. 实现RTSP摄像机进行网页直播和微信直播的技术方案:EasyNVR自动更新方法

    问题背景: 1.EasyNVR的用户越来越多,技术人员一一对应解答效率不高: 2.随着EasyNVR应用场景的不断增加,以及EasyNVR自身在技术上的不断优化,版本更新比较快: 3.由于开发人力有限 ...

  7. Redis实现主从复制(转)

    一.Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理论性的 ...

  8. Facebook Gradient boosting 梯度提升 separate the positive and negative labeled points using a single line 梯度提升决策树 Gradient Boosted Decision Trees (GBDT)

    https://www.quora.com/Why-do-people-use-gradient-boosted-decision-trees-to-do-feature-transform Why ...

  9. 经常遇到js的面试题

    大家都知道在面试的时候,很多前端的必须要问的就是js的问题,最近我们公司也有很多这样的面试,我提了一些个问题,还有我面试的时候面试官面试我的问题汇总,也有百度的别人的,希望对那些刚进入这个行业的有一些 ...

  10. 我的Android进阶之旅------>Android如何去除GridView的按下或点击选中后的背景效果

    今天用GridView做了一个界面,自己自定好了一个组件,并且设置好了点击和不点击组件时候的效果,但是运行的时候发现在我定义好的背景下面还有一层不知道哪儿来的背景,严重影响了我自定义的组件的效果. 后 ...