计算 活动期间订单满600元并且在活动日期之前超过30天没有下过单

首先拿到这个需求,首先需要明确活动日期区间 10.29-10.31,其次要取这个时间段内某天订单额最高的那天及订单额,再次需要判断这个用户在29号之前下过单,在29号之前的末单日期和10.29号之间的天数间隔大于30天

因此就转化为取两个表日期的问题

1、第一个表取所有用户在10.29号之前的末单日期,末单金额,这个表为主表 后面表left join 它

2、第二个表取活动期间订单额最高的那天(需要嵌套,先把这3天每天金额算出来,group by 用户ID,订单日期 按照用户ID升序 金额降序 再把这个表group by 用户ID 取出金额最高的这天)

3、然后第二个表left join 第一个表 以用户ID相等为条件

SELECT c.城市,c.用户ID,d.用户名称,d.用户地址,d.联系电话,c.销售员,c.订单日期,c.订单额,c.标识,c.上次订单日期 AS 29号之前末单日期,c.上次金额 AS 29号之前末单金额,e.第几天次 AS 29号之前末单为第几天次,c.上次下单距离29号相差天数 AS 29号之前末单日期距离29号相差天数
FROM (
SELECT a.*,b.订单日期,b.订单额
,CASE WHEN b.销售员 IS NULL THEN a.上次销售员 ELSE b.销售员 END AS 销售员
,CASE WHEN b.订单日期 IS NOT NULL AND b.订单额>=600 THEN ">=600" WHEN b.订单日期 IS NOT NULL AND b.订单额<600 THEN "<600" ELSE "10.29号到11.1号未下单" END AS 标识
,TIMESTAMPDIFF(DAY,a.上次订单日期,"2016-10-29")AS 上次下单距离29号相差天数
FROM (#取所有用户10.29号之前最后一次订单日期
SELECT a2.城市,a2.用户ID,a2.订单日期 AS 上次订单日期,a2.销售员 AS 上次销售员,a2.金额 AS 上次金额
FROM (
SELECT a1.城市,a1.用户ID,DATE(a1.订单日期) AS 订单日期,SUM(金额) AS 金额,a1.销售员
FROM `a003_order` AS a1
WHERE a1.城市='长春' AND a1.订单日期<"2016-10-29" AND a1.金额>0#取完各用户
GROUP BY a1.用户ID,DATE(a1.订单日期)
ORDER BY a1.用户ID,DATE(a1.订单日期) DESC
) AS a2
GROUP BY a2.用户ID
) AS a
LEFT JOIN (#用户在10.29到11.01订单额最高的一天
SELECT b2.用户ID,b2.订单日期,b2.销售员,b2.订单额
FROM (
SELECT b1.用户ID,DATE(b1.订单日期) AS 订单日期,b1.销售员,SUM(b1.金额) AS 订单额
FROM `a003_order` AS b1
WHERE b1.城市="长春" AND b1.订单日期>="2016-10-29" AND b1.订单日期<"2016-11-01" AND b1.金额>0
GROUP BY b1.用户ID,DATE(b1.订单日期)
ORDER BY b1.用户ID,SUM(b1.金额) DESC
) AS b2
GROUP BY b2.用户ID
) AS b ON a.用户ID=b.用户ID
) AS c
LEFT JOIN `a001_resterant`AS d ON d.用户ID=c.用户ID
LEFT JOIN `tb003_08` AS e ON e.用户ID=c.用户ID AND e.上次订单日期=c.上次订单日期
WHERE c.上次下单距离29号相差天数>=30 AND c.标识=">=600"

最新文章

  1. Spring中常用的连接池配置
  2. Floyd算法解决多源最短路径问题
  3. Android Tab -- 使用Fragment、FragmentManager来实现
  4. [Solution] 一步一步WCF(1) 快速入门
  5. 在php4下可用,简单的php数组转成json格式,
  6. Android 之 内存管理-查看内存泄露(三)
  7. log4net 将日志写入数据库
  8. Python番外之 阻塞非阻塞,同步与异步,i/o模型
  9. SQL学习之分组数据Group by
  10. 第一个python
  11. linux 远程操作(expect)
  12. 【模板小程序】任意长度非负十进制数转化为二进制(java实现)
  13. Unity中UGUI鼠标穿透UI问题的解决方法
  14. 学会4种备份MySQL数据库(基本备份方面没问题了)
  15. JavaScript高级程序设计学习(二)之基本概念
  16. POJ1611-The Suspects-并查集
  17. 使用socket.io client 开发时兼容IE低版本的办法
  18. 3.insert添加用法
  19. JAVA-将内容写入文件并导出到压缩包
  20. 配置ssh免密码登入

热门文章

  1. Pentaho Work with Big Data(五)—— 格式化原始web日志
  2. Java提高(二)---- HashTable
  3. Mysql 的存储引擎,myisam和innodb的区别。
  4. Oracle -- 连接每行的内容
  5. grok表达式
  6. 使用T4模板技术
  7. mvn deploy
  8. 创建laravel项目
  9. get_linux_ip_info.sh 获取ip地址
  10. ABAP-创建物料主数据