上周新增激活用户在上周下单情况

1、上周激活用户明细

#上周激活用户明细
SELECT a.城市,a.用户ID,a.用户名称,b.用户地址,b.联系电话,a.订单日期,c.年周,c.上周一,a.订单ID,a.产品ID,a.销售员,a.金额
FROM (
SELECT a1.城市,a1.用户ID,a1.用户名称,DATE(a1.订单日期) AS 订单日期,a1.订单ID,a1.产品ID,a1.销售员,SUM(a1.金额) AS 金额
FROM `a003_order` AS a1
WHERE a1.城市="北京" AND a1.金额>0 AND a1.订单日期>=DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AND a1.订单日期<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY))
GROUP BY a1.订单ID,a1.产品ID
ORDER BY a1.订单日期,a1.订单ID
) AS a
LEFT JOIN `a001_resterant` AS b ON a.用户ID=b.用户ID
INNER JOIN (#上周重激活新增用户明细 取交集
SELECT c6.*
FROM (
SELECT c5.城市,c5.用户ID,c5.上周首单日期,c5.年周,c5.上周一
,c5.上周首单日前30天之前金额,c5.上周首单日前30天金额,c5.上周首单日金额,
CASE
WHEN c5.上周首单日期>=c5.上周一 AND c5.上周首单日期< c5.本周一 THEN CONCAT("上周",c5.激活情况)
ELSE NULL END AS 激活情况,c5.本周一
FROM (#取上周首单 并添加用户重激活新增属性
SELECT c3.城市,c3.用户ID,c3.订单日期 AS 上周首单日期,c3.年周,
SUM(IF(DATE(c4.订单日期)<=DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND c4.金额>0,c4.金额,NULL)) AS 上周首单日前30天之前金额,
SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,c4.金额,NULL)) AS 上周首单日前30天金额,
c3.订单额 AS 上周首单日金额,
CASE
WHEN SUM(IF(DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,c4.金额,NULL)) IS NULL THEN "新增"
WHEN SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,金额,NULL)) IS NOT NULL THEN "留存"
WHEN SUM(IF(DATE(c4.订单日期)<=DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND c4.金额>0,金额,NULL)) IS NOT NULL AND SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,金额 ,NULL)) IS NULL THEN "重激活"
ELSE NULL END AS 激活情况,c3.上周一,c3.本周一
FROM (
SELECT c2.城市,c2.用户ID,c2.订单日期,c2.年周,c2.订单额,c2.本周一,c2.上周一#取出当月首单订单日期 首单销售 首单额 以这个日期往前推30天判断激活留存情况
FROM (#上周每一天
SELECT c1.城市,c1.用户ID,DATE(c1.订单日期) AS 订单日期,DATE_FORMAT(c1.订单日期,"%x%v") AS 年周,SUM(c1.金额) AS 订单额,DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AS 上周一,DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)) AS 本周一 #本月下单用户每天明细
FROM `a003_order` AS c1
WHERE c1.城市="北京" AND c1.订单日期>=DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AND c1.订单日期<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)) AND c1.金额>0
GROUP BY c1.用户ID,DATE(c1.订单日期)
) AS c2
GROUP BY c2.用户ID
) AS c3
LEFT JOIN `a003_order` AS c4 ON c4.用户ID=c3.用户ID
#where c3.用户ID=22200
GROUP BY c3.用户ID
) AS c5
WHERE c5.激活情况<>"留存"
) AS c6
WHERE c6.激活情况 IS NOT NULL
) AS c ON c.用户ID=a.用户ID

2、上周汇总

SELECT a.城市,a.用户ID,a.用户名称,d.用户地址,d.联系电话,c.上周首单日期 AS 上周激活新增日期,c.年周,c.上周一,a.上周下单天次,a.上周订单数,b.上周产品数,a.上周金额,c.激活情况,c.本周一
FROM (#上周下单天次 订单数 金额
SELECT a3.城市,a3.用户ID,a3.用户名称,COUNT(a3.订单日期) AS 上周下单天次,SUM(a3.订单数) AS 上周订单数,SUM(a3.金额2) AS 上周金额
FROM (
SELECT a2.城市,a2.用户ID,a2.用户名称,a2.订单日期,COUNT(a2.订单ID) AS 订单数,SUM(a2.金额1) AS 金额2
FROM (
SELECT a1.城市,a1.用户ID,a1.用户名称,DATE(订单日期) AS 订单日期,a1.订单ID,SUM(金额) AS 金额1
FROM `a003_order` AS a1
WHERE a1.城市="北京" AND a1.金额>0 AND a1.订单日期>=DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AND a1.订单日期<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY))
GROUP BY a1.订单ID
) AS a2
GROUP BY a2.用户ID,a2.订单日期
) AS a3
GROUP BY a3.用户ID
) AS a
LEFT JOIN (#上周产品数
SELECT b2.城市,b2.用户ID,COUNT(b2.产品ID) AS 上周产品数
FROM (
SELECT b1.城市,b1.用户ID,b1.产品ID,SUM(金额) AS 金额
FROM `a003_order` AS b1
WHERE b1.城市="北京" AND b1.金额>0 AND b1.订单日期>=DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AND b1.订单日期<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY))
GROUP BY b1.用户ID,b1.产品ID
) AS b2
GROUP BY b2.用户ID
) AS b ON a.用户ID=b.用户ID
INNER JOIN (#上周重激活新增用户明细 取交集
SELECT c6.*
FROM (
SELECT c5.城市,c5.用户ID,c5.上周首单日期,c5.年周,c5.上周一
,c5.上周首单日前30天之前金额,c5.上周首单日前30天金额,c5.上周首单日金额,
CASE
WHEN c5.上周首单日期>=c5.上周一 AND c5.上周首单日期< c5.本周一 THEN CONCAT("上周",c5.激活情况)
ELSE NULL END AS 激活情况,c5.本周一
FROM (#取上周首单 并添加用户重激活新增属性
SELECT c3.城市,c3.用户ID,c3.订单日期 AS 上周首单日期,c3.年周,
SUM(IF(DATE(c4.订单日期)<=DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND c4.金额>0,c4.金额,NULL)) AS 上周首单日前30天之前金额,
SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,c4.金额,NULL)) AS 上周首单日前30天金额,
c3.订单额 AS 上周首单日金额,
CASE
WHEN SUM(IF(DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,c4.金额,NULL)) IS NULL THEN "新增"
WHEN SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,金额,NULL)) IS NOT NULL THEN "留存"
WHEN SUM(IF(DATE(c4.订单日期)<=DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND c4.金额>0,金额,NULL)) IS NOT NULL AND SUM(IF(DATE(c4.订单日期)>DATE_ADD(c3.订单日期,INTERVAL -30 DAY) AND DATE(c4.订单日期)<c3.订单日期 AND c4.金额>0,金额 ,NULL)) IS NULL THEN "重激活"
ELSE NULL END AS 激活情况,c3.上周一,c3.本周一
FROM (
SELECT c2.城市,c2.用户ID,c2.订单日期,c2.年周,c2.订单额,c2.本周一,c2.上周一#取出当月首单订单日期 首单销售 首单额 以这个日期往前推30天判断激活留存情况
FROM (#上周每一天
SELECT c1.城市,c1.用户ID,DATE(c1.订单日期) AS 订单日期,DATE_FORMAT(c1.订单日期,"%x%v") AS 年周,SUM(c1.金额) AS 订单额,DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AS 上周一,DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)) AS 本周一 #本月下单用户每天明细
FROM `a003_order` AS c1
WHERE c1.城市="北京" AND c1.订单日期>=DATE_ADD(SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1),INTERVAL -1 WEEK) AND c1.订单日期<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)) AND c1.金额>0
GROUP BY c1.用户ID,DATE(c1.订单日期)
) AS c2
GROUP BY c2.用户ID
) AS c3
LEFT JOIN `a003_order` AS c4 ON c4.用户ID=c3.用户ID
#where c3.用户ID=22200
GROUP BY c3.用户ID
) AS c5
WHERE c5.激活情况<>"留存"
) AS c6
WHERE c6.激活情况 IS NOT NULL
) AS c ON c.用户ID=a.用户ID
LEFT JOIN `a001_resterant` AS d ON d.用户ID=a.用户ID
ORDER BY a.用户ID,c.上周首单日期

MySQL上周新增激活用户在上周下单情况_20161107周一的更多相关文章

  1. mysql查询今天、昨天、上周

    mysql查询今天.昨天.上周 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE ...

  2. mysql 数据库新增用户

    1.user表中host为%含义: Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1.这里的意思就是说root用户只能通过192.168.1.1的客户 ...

  3. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版)

    利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版) CREATE DEFINER=`root`@`%` FUNCTION `uc_session_login`( `reqjson` JS ...

  4. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  5. 查看MYSQL数据库中所有用户及拥有权限

    查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...

  6. Mysql创建、删除用户

    1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Passwor ...

  7. MySQL user表root用户误删除后恢复

    mysql user表root 用户误删除后恢复root用户 方法/步骤 1.停止mysql服务:在mysql安装目录下找到my.ini:在my.ini中找到以下片段[mysqld]:另起一行加入代码 ...

  8. mysql安装使用--2 用户管理

    1 修改mysql.user表 添加用户 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', ...

  9. 使用MySQL命令行新建用户并授予权限的方法

    MySQL命令行能否实现新建用户呢?答案无疑是肯定的.而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限. 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的ro ...

随机推荐

  1. HDU 1874 畅通project续 最短路径入门(dijkstra)

    Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案 ...

  2. Xenomai 3 POSIX

    Xenomai 3在架构设计上确实优先Xenomai 2,至少对开发者来说,少维护了不少东西,看下面两张图就知道了 第一张图是Xenomai2的,第二张图是Xenomai3的,Xenomai3在内核中 ...

  3. 给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?

    // ConsoleApplication5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<vector> ...

  4. Rider

    听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider   本文地址:http://www.cnblogs.com/likeli/p/8461010.html 前言 .NET平台的开发一直都只 ...

  5. 【WPF学习笔记】之如何通过后台C#代码添加(增/删/改按钮)实现对SQLServer数据库数据的更改

    首先,需要连接SQLServer数据库的服务器名称server.数据库名database.数据库用户名uid以及密码pwd,如下图: 然后需要以下数据库SQL代码段,还有一个myHelper.cs代码 ...

  6. Java 集成域登陆

    参考: 1. JAVA中使用jcifs集成AD域用户认证 2. https://liaosy.iteye.com/blog/1887092 3.其他库 https://github.com/Waffl ...

  7. 【BZOJ4383】[POI2015]Pustynia 线段树优化建图

    [BZOJ4383][POI2015]Pustynia Description 给定一个长度为n的正整数序列a,每个数都在1到10^9范围内,告诉你其中s个数,并给出m条信息,每条信息包含三个数l,r ...

  8. 九度OJ 1007:奥运排序问题 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7344 解决:1568 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号从0到N- ...

  9. Gin Web框架简单介绍

    翻译自: https://github.com/gin-gonic/gin/blob/develop/README.md Gin Web框架 branch=master"> Gin是用 ...

  10. 流畅python学习笔记第十八章:使用asyncio包处理并发(一)

    首先是线程与协程的对比.在文中作者通过一个实例分别采用线程实现和asynchio包实现来比较两者的差别.在多线程的样例中,会用到join的方法,下面来介绍下join方法的使用. 知识点一:当一个进程启 ...