需求:杭州拱墅区、西湖区近9-11月销售过的产品

这个SQL如果对数据表熟悉的话可以一步到位,为了看的更清楚,时间间隔在3个月产品数量也不是很多,采取先找明细再进行汇总。

一、第一种写法 分步骤的写SQL 逻辑清晰

1、首先先观察区块的字段 

SELECT 区块 FROM `a001_resterant` WHERE 城市='杭州' GROUP BY 区块

可以看到 西湖区是划成了5个分区 因此需要对这5个分区改成统一的分区利用case when 条件判断生成新字段 分区

2、明细。由于用户区块是固定的,先找到每个用户每个月每个产品的销售情况。

SELECT a1.城市,a1.用户ID,DATE_FORMAT(订单日期,"%Y%m") AS 年月,a2.区块,CASE WHEN a2.区块='拱墅区' THEN '拱墅区' WHEN a2.区块 LIKE '西湖%' THEN '西湖区' ELSE NULL END AS 分区,SKUID,SKU名称,SUM(金额) AS 金额
FROM `a003_order` AS a1
LEFT JOIN `a001_resterant` AS a2 ON a1.用户ID=a2.用户ID
WHERE a1.城市='杭州' AND 金额>0 AND (a2.区块='拱墅区' OR a2.区块 LIKE '西湖%') AND 订单日期>='2016-09-01' AND 订单日期<CURRENT_DATE
GROUP BY a1.用户ID,DATE_FORMAT(订单日期,"%Y%m"),SKUID

3、汇总。此时由于嵌套表已把西湖五个区划成统一的西湖区,因此嵌套表里的分区字段进行group by 

SELECT 城市,分区,b.商品分类一级,b.商品分类二级,b.商品分类三级,a.SKUID,a.SKU名称,SUM(金额) AS 订单额,SUM(IF(年月=201609,金额,NULL)) AS 9月金额,SUM(IF(年月=201610,金额,NULL)) AS 10月金额,SUM(IF(年月=201611,金额,NULL)) AS 11月金额
FROM (#明细 每个用户所在区块的近三个月销售的SKU
SELECT a1.城市,a1.用户ID,DATE_FORMAT(订单日期,"%Y%m") AS 年月,a2.区块,CASE WHEN a2.区块='拱墅区' THEN '拱墅区' WHEN a2.区块 LIKE '西湖%' THEN '西湖区' ELSE NULL END AS 分区,SKUID,SKU名称,SUM(金额) AS 金额
FROM `a003_order` AS a1
LEFT JOIN `a001_resterant` AS a2 ON a1.用户ID=a2.用户ID
WHERE a1.城市='杭州' AND 金额>0 AND (a2.区块='拱墅区' OR a2.区块 LIKE '西湖%') AND 订单日期>='2016-09-01' AND 订单日期<CURRENT_DATE
GROUP BY a1.用户ID,DATE_FORMAT(订单日期,"%Y%m"),SKUID
) AS a
LEFT JOIN `a002_sku` AS b ON a.SKUID=b.SKUID
GROUP BY 分区,a.SKUID
ORDER BY 分区,b.商品分类一级,b.商品分类二级,b.商品分类三级,SUM(金额) DESC

二、第二种写法 一步到位 

SELECT a.城市,CASE WHEN c.区块='拱墅区' THEN '拱墅区' WHEN c.区块 LIKE '西湖%' THEN '西湖区' ELSE NULL END AS 分区,b.商品分类一级,b.商品分类二级,b.商品分类三级,a.SKUID,a.SKU名称,SUM(金额) AS 订单额,SUM(IF(DATE_FORMAT(订单日期,"%Y%m")=201609,金额,NULL)) AS 9月金额,SUM(IF(DATE_FORMAT(订单日期,"%Y%m")=201610,金额,NULL)) AS 10月金额,SUM(IF(DATE_FORMAT(订单日期,"%Y%m")=201611,金额,NULL)) AS 11月金额
FROM `a003_order` AS a
LEFT JOIN `a002_sku` AS b ON a.SKUID=b.SKUID
LEFT JOIN `a001_resterant` AS c ON a.餐馆ID=c.餐馆ID
WHERE a.城市='杭州' AND 金额>0 AND (c.区块='拱墅区' OR c.区块 LIKE '西湖%') AND 订单日期>='2016-09-01' AND 订单日期<CURRENT_DATE
GROUP BY 分区,a.SKUID
ORDER BY 分区,b.商品分类一级,b.商品分类二级,b.商品分类三级,SUM(金额) DESC

MySQL_杭州拱墅区、西湖区近9-11月销售过的产品_20161125的更多相关文章

  1. MySQL_杭州11月销售昨日未上架的SKU_20161212

    #C034杭州11月销售昨日未上架的SKU SELECT 城市,a.订单日期,a.客户数,a.订单数,b.产品数,a.金额,c.销售确认额,c.毛利额,c.毛利率 FROM ( SELECT 城市,订 ...

  2. MySQL_西安11月销售昨日未上架的产品_20161212

    #C034西安11月销售昨日未上架的产品  SELECT 城市,a.订单日期,a.客户数,a.订单数,b.产品数,a.金额,c.销售确认额,c.毛利额,c.毛利率 FROM ( SELECT 城市,订 ...

  3. MySQL_杭州11月1-29号在线产品在线天数、销售天数_20161129

    杭州11月1-29号在线产品在线天数.销售天数 1.产品在这个时间段内的每一天的在线情况,然后聚合计算每个产品的在线天数,每一天的在线情况 如果在线记为1,不在线为null 2.计算每个产品在这个时间 ...

  4. 微软Power BI 每月功能更新系列——11月Power BI 新功能学习

    Power BI Desktop11月产品功能摘要 本月Power BI Desktop 有一个大规模的更新.现在,通常可以使用复合模型在一个模型中将直接查询和导入源组合在一起.UserVoice上的 ...

  5. CSDN问答频道“华章杯”11月排行榜活动开始,丰厚奖品等你拿

    CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...

  6. 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了

    主办单位: 中国遥感应用协会 Esri中国信息技术有限公司 内容简单介绍: 依据中国遥感应用协会栾恩杰理事长推动国内遥感技术和应用的指示精神,2014年中国遥感应用协会组织培训交流部与Esri中国信息 ...

  7. psp进度(11月25号-31号)

    本周psp进度 11月25号 内容 开始时间 结束时间 打断时间 净时间 处理数据集  9:27  11:34  12m  115m 11月27号 内容 开始时间 结束时间 打断时间 净时间  scr ...

  8. 本周psp(11月17-23)

    本周psp进度 11月19号 内容 开始时间 结束时间 打断时间 净时间 发布读书笔记 11:05 11:25 0 20m 看构建之法书 9:50 10:48 5m 53m 11月20号 内容 开始时 ...

  9. Autodesk 2013开发者日(DevDays)又要来了 -- 北京(2013年11月7日)和上海(2013年11月11日)

    各位, 一年一度的Autodesk 开发者日(Devdays)开始注册了,抓紧时间前排占座! 注册地址: www.autodesk.com.cn/adndevday2013 今年开发者日的主题:革命性 ...

随机推荐

  1. iReport+jasperreport创建子表的几种方式(1)

    在制作报表的过程中,子表是不可缺少的.今天就研究了一下制作子表的几种方式 一.连接数据库创建子表 以MySQL为例: 我的数据源数据库中的表 watermark/2/text/aHR0cDovL2Js ...

  2. Nginx多域名多Server反向代理配置

    Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了.下面我就来说说server_name的使用吧:ser ...

  3. Enumerate Combination C(k, n) in a bitset

    Suppose n<=32, we can enumerate C(k, n), with bits representing absence or presence, in the follo ...

  4. sphinx PDF 中文

    使用reST撰写文档时,需要分多个文档时,就必须使用sphinx了,sphinx说起来很简单的,但是默认是不是支持中文的.幸好我出生的晚,sphinx现在已经支持xelatex了^_^ 安装 除了pa ...

  5. POJ 1787 Charlie&#39;s Change

    多重背包 可行性+路径记录 题意是说你要用很多其它的零钱去买咖啡.最后输出你分别要用的 1,5 ,10 .25 的钱的数量. 多重背包二进制分解.然后记录下 这个状态.最后逆向推就可以. #inclu ...

  6. Linux下Kafka单机安装配置方法

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...

  7. attr/attrs模块

    attr简介 开源库,提供了为函数或类提供更直接的创建属性的方法. Github or PyPi 用法 from attr import attrs, attrib @attrs class Foo: ...

  8. typeof 与 instanceof 区别

    typeof typeof 是一元运算符,返回值是字符串,且只能是number,string,boolean,object,function,undefined typeof用来判断一个值是否存在 i ...

  9. ASP.NET MVC 相关的社群与讨论区

    ASP.NET MVC 官方论坛  http://forums.asp.net/1146.aspx 台湾微软MSDN论坛 --- ASP.NET 与 AJAX(ASP.NET AND AJAX)讨论区 ...

  10. [转]Struts form传值

    Struts form传值 大约三四个月没用过struts框架,突然想拾起来,却发现好多都忘了.出现传值传不过来的问题.没办法,上网查了一下,看见了一位老师的帖子,总结的很好.特此转载与分享,文末附链 ...