计算一些数不难,整体来说还是要培养自我的逻辑意识,逻辑清楚,代码自然而然就知道,总体上训练自己的逻辑,一个是从用户角度,一个是从产品角度。
用户角度需要考虑的是用户的活跃度,具体又可以细分为用户的注册日期,下单间隔,用户各个时间维度的订单数,订单额,等等
产品角度考虑产品分类,产品品牌,产品供应商角度等等。
今天一个需求是谈及一些品牌合作商合作,需要要一些数据,统计锦3个月的销量和金额,采购部门提供了一些品牌。
如果按照传统上出数,只需要在where 条件中加上 品牌 in (品牌1,品牌2,品牌3 等等) 只给他这些数据可以实现,不过如果下次他要考察这次品牌之外的数据 是不是还得修改where 条件去限制 不仅如此 where in 这些条件限制 打出来也比较麻烦
比较好的逻辑是把所有品牌的金3个月的明细汇总调出来,通过excel sumif sumifs 函数
品牌汇总的SQL 如下 数据经过修改
SELECT d.ID,c.城市,c.品牌名称,c.年月,COUNT(c.产品ID) AS SKU数,SUM(订单额) AS 订单额,SUM(打包量) AS 打包量 FROM ( SELECT a.城市,a.产品ID,a.产品名称,b.品牌名称,DATE_FORMAT(a.订单日期,"%Y%m") AS 年月,SUM(a.金额) AS 订单额,SUM(`汇总打包量`) AS 打包量 FROM `a003_order` AS a LEFT JOIN `a002_sku` AS b ON a.产品ID=b.产品ID WHERE a.订单日期>="2016-08-01" AND a.订单日期<"2016-11-01" AND a.金额>0 GROUP BY a.城市,a.产品ID,DATE_FORMAT(a.订单日期,"%Y%m") ) AS c LEFT JOIN `a000_city` AS d ON d.城市=c.城市 GROUP BY c.城市,c.品牌名称,c.年月 ORDER BY d.ID,c.年月
excel:品牌汇总sheet表 数据
这个excel sheet表里品牌不只有ABCD4个品牌,而是多个品牌
我们按照下面格式展现数据,运用刚刚提到的两个函数
以后如果他想看什么品牌的 什么时间段的 我们只需要修改where 时间限制就可以 同时把需要展现的品牌替换掉就可以了
sumif()公式:=SUMIF(品牌汇总!$C:$C,数据!$B4,品牌汇总!G:G) 也就是(条件区域A,条件B,求和区域C) 其中条件B在条件区域A内
也就是求条件B的求和区域C的和
品牌汇总!$C:$C: 这是选中品牌汇总表中C列 及品牌列 这是条件区域
数据!$B4:这是数据中B4单元格 也就是品牌A 可以发现 这个品牌A在上面的条件区域中
品牌汇总!G:G:这是选中品牌汇总表中G列 及品牌列 这是求和区域 及打包量
解释一下就是在品牌汇总表中求品牌A的打包量的总和
SUMIFS(品牌汇总!$F:$F,品牌汇总!$C:$C,数据!$B4,品牌汇总!$B:$B,F$3,品牌汇总!$D:$D,201608)
SUMIFS(求和区域,条件区域A,条件A,条件区域B,条件B) 条件A在条件区域A内 条件区域B在条件区域B内
其中也使用了绝对引用 相对引用 半绝对引用 直接拖动公式就可以
结果如下
如果想看品牌ABC和SD 9月的 把公式中全选数据sheet表 整体把201608换成201609 数据sheet表中D改成SD即可
这样自主操作性很方便