计算一些数不难,整体来说还是要培养自我的逻辑意识,逻辑清楚,代码自然而然就知道,总体上训练自己的逻辑,一个是从用户角度,一个是从产品角度。

用户角度需要考虑的是用户的活跃度,具体又可以细分为用户的注册日期,下单间隔,用户各个时间维度的订单数,订单额,等等

产品角度考虑产品分类,产品品牌,产品供应商角度等等。

今天一个需求是谈及一些品牌合作商合作,需要要一些数据,统计锦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` ASaLEFT JOIN `a002_sku` AS b ON a.产品ID=b.产品IDWHERE a.订单日期>="2016-08-01" AND a.订单日期0

GROUP BY a.城市,a.产品ID,DATE_FORMAT(a.订单日期,"%Y%m")

)AScLEFT JOIN `a000_city` AS d ON d.城市=c.城市GROUP BYc.城市,c.品牌名称,c.年月ORDER BY d.ID,c.年月

excel:品牌汇总sheet表 数据

java mysql sum求和 mysql sumif_java mysql sum求和

这个excel sheet表里品牌不只有ABCD4个品牌,而是多个品牌

我们按照下面格式展现数据,运用刚刚提到的两个函数

以后如果他想看什么品牌的 什么时间段的 我们只需要修改where 时间限制就可以 同时把需要展现的品牌替换掉就可以了

java mysql sum求和 mysql sumif_数据_02

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的打包量的总和

java mysql sum求和 mysql sumif_mysql多表sumif_03

SUMIFS(品牌汇总!$F:$F,品牌汇总!$C:$C,数据!$B4,品牌汇总!$B:$B,F$3,品牌汇总!$D:$D,201608)

SUMIFS(求和区域,条件区域A,条件A,条件区域B,条件B) 条件A在条件区域A内 条件区域B在条件区域B内

java mysql sum求和 mysql sumif_java mysql sum求和_04

其中也使用了绝对引用 相对引用 半绝对引用 直接拖动公式就可以

结果如下

java mysql sum求和 mysql sumif_java mysql sum求和_05

如果想看品牌ABC和SD 9月的 把公式中全选数据sheet表 整体把201608换成201609  数据sheet表中D改成SD即可

java mysql sum求和 mysql sumif_java mysql sum求和_06

这样自主操作性很方便