十一休假老家事比较多 未来得及更新 今起依旧更博-

生成一个以用户ID为单位,各月下单天次,各月买了几个产品,各月订单额

SELECT 城市,用户ID,SUM(IF(年月=201607,天次,NULL)) AS 7月天次,SUM(IF(年月=201608,天次,NULL)) AS 8月天次,SUM(IF(年月=201609,天次,NULL)) AS 9月天次
FROM (
SELECT city AS 城市,username AS 用户ID,DATE_FORMAT(order_date,"%Y%m") AS 年月,COUNT(order_date) AS 天次
FROM `test_a03order` AS a
GROUP BY city,username,DATE_FORMAT(order_date,"%y%m")
) AS b
GROUP BY 城市,用户ID

各月天次

SELECT 城市,用户ID,SUM(IF(年月=201607,1,NULL)) AS 7月产品数,SUM(IF(年月=201608,1,NULL)) AS 8月产品数,SUM(IF(年月=201609,1,NULL)) AS 9月产品数
FROM (
SELECT city AS 城市,username AS 用户ID,DATE_FORMAT(order_date,"%Y%m") AS 年月,productID AS 产品ID
FROM `test_a03order` AS a
GROUP BY city,username,DATE_FORMAT(order_date,"%y%m"),productID
) AS b
GROUP BY 城市,用户ID

各月产品数

SELECT city AS 城市,username AS 用户ID,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201607,pay_money,NULL)) AS 7月金额,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201608,pay_money,NULL)) AS 8月金额,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201609,pay_money,NULL)) AS 9月金额
FROM `test_a03order` AS a
GROUP BY city,username

各月订单额

这样每个用户ID在各月的数据指标都已经写出来了,通过left join 把这几个指标连接起来

SELECT a.城市,a.用户ID,a.7月金额,b.7月天次,c.7月产品数,a.8月金额,b.8月天次,c.8月产品数,a.9月金额,b.9月天次,c.9月产品数
FROM (
SELECT city AS 城市,username AS 用户ID,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201607,pay_money,NULL)) AS 7月金额,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201608,pay_money,NULL)) AS 8月金额,SUM(IF(DATE_FORMAT(order_date,"%Y%m")=201609,pay_money,NULL)) AS 9月金额
FROM `test_a03order` AS a1
GROUP BY city,username
) AS a
LEFT JOIN (
SELECT 城市,用户ID,SUM(IF(年月=201607,天次,NULL)) AS 7月天次,SUM(IF(年月=201608,天次,NULL)) AS 8月天次,SUM(IF(年月=201609,天次,NULL)) AS 9月天次
FROM (
SELECT city AS 城市,username AS 用户ID,DATE_FORMAT(order_date,"%Y%m") AS 年月,COUNT(order_date) AS 天次
FROM `test_a03order` AS b1
GROUP BY city,username,DATE_FORMAT(order_date,"%y%m")
) AS b2
GROUP BY 城市,用户ID
) AS b ON a.城市=b.城市 AND a.用户ID=b.用户ID
LEFT JOIN (
SELECT 城市,用户ID,SUM(IF(年月=201607,1,NULL)) AS 7月产品数,SUM(IF(年月=201608,1,NULL)) AS 8月产品数,SUM(IF(年月=201609,1,NULL)) AS 9月产品数
FROM (
SELECT city AS 城市,username AS 用户ID,DATE_FORMAT(order_date,"%Y%m") AS 年月,productID AS 产品ID
FROM `test_a03order` AS c1
GROUP BY city,username,DATE_FORMAT(order_date,"%y%m"),productID
) AS c2
GROUP BY 城市,用户ID
) AS c ON a.城市=c.城市 AND a.用户ID=c.用户ID

用户ID综合情况表

休假回来 更博-MySQL以月为单位的客户综合情况表_20161008的更多相关文章

  1. 实现mysql按月统计的教程

    From: http://www.jbxue.com/db/758.html 实现mysql按月统计的教程   mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句? se ...

  2. MySQL按照月进行统计

    MySQL按照月进行统计 今天需要后台提供一个按月统计的API.所以查了一下SQL语句的实现方法. 按月统计SQL select date_format(createtime, '%Y-%m') as ...

  3. mysql按月统计六个月内不同类型订单的成交金额

    mysql按月统计六个月内不同类型订单的成交金额 创建数据库 CREATE DATABASE test; 创建订单表 CREATE TABLE `t_order` ( `id` ) NOT NULL ...

  4. (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析【待写】

    (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析[待写]

  5. mysql 按月按周统计

    http://hi.baidu.com/liangjian1024/blog/item/6861541b1416094842a9ad7c.html 表finance有俩个字段如下 date date  ...

  6. mysql按月,按日分组统计数据

    group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...

  7. mysql 按月统计但是有几个月没有数据,需要变成0

    创建现在倒过去的12个月的视图 CREATE VIEW `past_12_month_view` AS SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `month ...

  8. mysql按月分表, 组合查询

    每个月月底最后一天建好下个月的空表 或每年底建1到12月的空表 , table_201901,table_201902,table_201903 增加记录不需要修改,insert到当月对应表就好了. ...

  9. mysql按月获取一年内每个月的数据量

    SELECT COUNT(id) AS num, DATE_FORMAT(create_time, '%Y-%m') AS createTime FROM table WHERE create_tim ...

随机推荐

  1. java 开发环境安装

    一.在mac上安装jdk 1. 下载Mac版本的JDK并安装      http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  2. 使用css counter来美化代码片段的样式

    博客园默认的代码片段样式不太美观,特别是复制代码时会把前面的行号也复制下来,操作起来比较麻烦.最近看到一种使用CSS计数器来美化代码片段的方法,于是研究了一下计数器的使用,在此做个笔记. 这是官网的例 ...

  3. Jquery 常用方法总结

    1.Attribute(属性): $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({src:”test.jpg”,alt:”test Ima ...

  4. golang生成随机函数的实现

    golang生成随机数可以使用math/rand包, 示例如下: package main import ( "fmt" "math/rand" ) func ...

  5. 【转】windows下 ADT NDK开发环境配置

    前提: 下载好Ecplise ADT并配置好开发环境,不会配置环境可以参考这里: http://blog.csdn.net/danfengw/article/details/47111107 步骤: ...

  6. ThinkPHP学习笔记(二)

    1.比较好的参考手册(非官方,注意:也有一些错误,当出不来想要的效果时以官方的手册为准):http://www.5idev.com/p-thinkphp_lib_vendor.shtml 2.加载自定 ...

  7. 小程序WePY入门(一)

    全局安装或更新WePY命令行工具 npm install wepy-cli -g 在开发目录中生成Demo开发项目 wepy new myproject 切换至项目目录 cd myproject 开启 ...

  8. 九度OJ 1072:有多少不同的面值组合? (计数)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3112 解决:1591 题目描述: 某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张或若干张可以得到多少种不同的 ...

  9. split_brain

    脑裂 系统中两个或多个部分开始独立工作

  10. samba服务器的搭建和配置

    案例: 公司有两个部门, sales / market . 分别有成员 jack / tom 和 zhang / shen . 公司需求是这样的, 本部门资料禁止其他部门访问, 本部门成员之间不能干扰 ...