zoukankan      html  css  js  c++  java
  • MySQL_活动期间单笔订单最高的且满600元 判别是重激活客户还是10月注册客户_20161031

    将29号和30号两个需求放到一个表当中 首先都满足在10.29到31号之间单笔订单最高的且满600元 数据结构为一个用户一个订单ID 一行一行的

    上面是第一个表 我们当做主表 a

    第二个表 我们找注册表 b left join a  on a.用户ID=b.用户ID 找到用户的注册日期 

    第三个表 我们找之前博客判断新增留存属性用过的方法 取三段时间日期(9.29之前,9.29到10.29,10.29到10.31)的金额去判断 也是以用户ID为单位  一行一个记录 记为c表

    SELECT d.*,
    CASE 
    WHEN 9月29日之前的金额 IS NULL AND 历史30天的金额 IS NULL AND MONTH(注册日期)=10 THEN "10月注册且新下单"      
    WHEN 9月29日之前的金额 IS NULL AND 历史30天的金额 IS NULL AND MONTH(注册日期)<>10 THEN "非10月注册且新下单"     
    WHEN 9月29日之前的金额 IS NOT NULL AND 历史30天的金额 IS  NULL THEN "间隔超过30天"  
    ELSE NULL END AS 标识
    FROM (
        SELECT a.*,c.9月29日之前的金额,c.历史30天的金额,c.10月29日到31日的金额,DATE(b.注册时间) AS 注册日期
        FROM ( # 29日-31日三天 最高金额订单的用户明细
            SELECT 城市,用户ID,用户名称,销售员,订单日期,订单ID AS 最高金额订单ID,金额,CASE WHEN 金额>=600 THEN ">=600" ELSE "<600" END AS 标识1
            FROM ( # 29日-31日三天 订单明细
                SELECT 城市,用户ID,用户名称,销售员,DATE(订单日期) AS 订单日期,订单ID,SUM(金额) AS 金额
                FROM a003_order
                WHERE 城市="长春" AND 订单日期>="2016-10-29" AND 订单日期<"2016-11-01" AND 金额>0
                GROUP BY 城市,用户ID,订单ID
                ORDER BY 城市,用户ID,SUM(金额) DESC
            ) AS a1
            GROUP BY 城市,用户ID
            ORDER BY 城市,金额 DESC
        )AS a
        LEFT JOIN  a001_resterant AS b ON a.用户ID=b.用户ID
        LEFT JOIN ( 
            SELECT 城市,用户ID
            ,SUM(IF((订单日期<"2016-09-29"),金额,NULL)) AS 9月29日之前的金额
            ,SUM(IF((订单日期>="2016-09-29" AND 订单日期<"2016-10-29"),金额,NULL)) AS 历史30天的金额
            ,SUM(IF((订单日期>="2016-10-29" AND 订单日期<"2016-11-01"),金额,NULL)) AS 10月29日到31日的金额
            FROM a003_order
            WHERE 城市="长春" AND 金额>0
            GROUP BY 城市,用户ID
        ) AS c ON a.用户ID=c.用户ID
    ) AS d
    HAVING 标识  IS NOT NULL
    ORDER BY d.金额 DESC 
  • 相关阅读:
    Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the
    Caused by: java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
    jpa单向一对一关系外键映射
    jpa关联映射
    svn 插件去除已经保存的密码方法
    【前端】less学习
    【CodeForces 520E】Pluses everywhere
    费马小定理证明
    【前端】纯前端的一个‘喜欢我吗?’
    Sublime text3 插件HTML/CSS/JS prettify 格式化代码
  • 原文地址:https://www.cnblogs.com/Mr-Cxy/p/6017289.html
Copyright © 2011-2022 走看看