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

生成一个以用户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. jquery,smarty,dedecms的插件思路------dede未实践

    1.jquery定义一个新函数,这个函数可以使用jquey的所有功能 2.smarty,dede其实也和jquery一样,不过是可以使用系统的一些方法而已 3.可能还有一些规范,如smarty插件的命 ...

  2. Oracle:创建存储过程

    1.无参存储过程 create or replace procedure test_procasv_total number(10);begin  select count(*) into v_tot ...

  3. Dell 刀片服务器CentOS6.5mini开机20~30分钟宕机

    今天查看系统日志发现大量的nf_conntrack: table full, dropping packet. 错误 cat /var/log/messages | moreJun  7 09:52: ...

  4. 如何利用JQuery获取iframe内联框架对象?

    parent.$("#iframeID").get(0).contentWindow; 父.$("选择器").get(0).contentWindow; get ...

  5. mongodb distinct去重

    MongoDB的destinct命令是获取特定字段中不同值列表.该命令适用于普通字段,数组字段和数组内嵌文档. mongodb的distinct的语句: db.users.distinct('last ...

  6. 数据库ACID操作---事务四原则

    事务操作四原则: 1>原子性:简单来说——整个事务操作如同原子已经是物理上最小的单位,不可分离事务操作要么一起成功,要么一起失败. 2>一致性:倘若事务操作失败,则回滚事务时,与原始状态一 ...

  7. C#中的let字句应用示例

    一.应用场景 在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用. 可以使用 let 关键字完成这一工作,该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量 ...

  8. WCP源码分析 与SpringMVC学习资料

    1.在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便. Spring2.5为我们引入了组件自动扫描机制,他可以在 ...

  9. 1、找出url汇总页,过滤出满足条件的详情页url;2、去详情页采集信息

    1.找出url汇总页,过滤出满足条件的详情页url:2.去详情页采集信息 package main import ( "fmt" "github.com/gocolly/ ...

  10. JAVA Socket基础(简单实现)

    学习Socket需要了解的几个概念: Socket 指的是互联网连接中的各个终结点.互联网连接是怎么创建的,通过IP地址加端口号,进行互通. A电脑(192.168.3.125:80)>> ...