需求:杭州拱墅区、西湖区近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. ExtJs4学习(二):Dom操作

    如今主流的JS框架要数ExtJs和JQuery应用的比較广泛.JQuery属于轻量级的,一般做站点应用比較常见.可见块头小的优势. ExtJs比較庞大,它除了对主要的JS语法和HTML DOM操作方式 ...

  2. rtems 4.11 启动流程(arm, beagle)

    请参照官方的 bsp_howto 文档,对arm来说,首先执行的文件是start.S start.S c/src/lib/libbsp/arm/shared/start/start.S 1.从 _st ...

  3. Spark源码分析之六:Task调度(二)

    话说在<Spark源码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这个方法针对接收到的ReviveOffer ...

  4. 在mac下搭建java开发环境

    刚刚从windows系统转到使用mac系统.感觉不是特别熟悉,须要一定的适应时间. 以下简介一下mac下搭建主要的java开发环境. 1.安装jdk 安装jdk1.7后,发现不须要进行环境变量配置,直 ...

  5. 离线安装Cloudera Manager5.3.4与CDH5.3.4(一)

    这几天一直在安装CDH,头都搞大了,安装第三次,最终成功了. 第一次问题非常多.后面卸载了.由于没有卸载干净导致第二次安装失败. 后来索性重装系统了.直接使用了纯净系统进行安装.一个人跑到学院机房去装 ...

  6. android菜鸟学习笔记14----Android控件(三) ListView的简单使用

    MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法 ...

  7. Django一对多的创建

    1.一对多的应用场景: 例如:创建用户信息时候,需要选择一个用户类型[普通用户][金牌用户][铂金用户]等. 2.方法: class Business(models.Model): buss=mode ...

  8. 【Windows】修改远程桌面端口号

    echo off echo 修改远程连接端口 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Se ...

  9. ubuntu 14.04 用 shell 方便安装nginx

    nginx.sh apt-get install -y build-essential gcc g++ make m4 libpcre3 libpcre3-dev libcurl4-gnutls-de ...

  10. iOS本地数据存取,看这里就够了

    本文授权转载,作者:hosea_zhou(简书) 应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2) ...