MYSQL 怎么在 sum 某个字段时判断如果另一个字段为空时,该行则不 sum 进去

2017-07-27 10:02:23 +08:00
 solaro

目前业务情况是这样的: 商品 XXX 有 进货价 A、售价 B、实际售价 C (扣去优惠实际付费金额) 现在要统计所有收银单里的商品 XXX 的利润

要求:

if (A == 0) { // 没有设置进货价的,则当它利润是 0,不统计 // 不加入统计 } else { profit = ( 实际售价 C - 进货价 A ) * 数量; sum(profit) // mysql 里的 sum profit_rate = sum(profit) / sum(进货价 A * 数量); //利润率 }

mysql 咋写啊 。。。我日

得在 mysql 里用 IF 吗?写不来

5454 次点击
所在节点    MySQL
12 条回复
tusj
2017-07-27 10:14:49 +08:00
gaolycn
2017-07-27 10:24:41 +08:00
问的莫名其妙,select sum(C-A) from xxx where A!=0;
我仔细看了问题一遍又一遍,确定楼主就是这个意思啊,难道我理解错了??
nullen
2017-07-27 10:30:19 +08:00
假设:a 字段是计数字段,b 是可能为空的字段

SELECT SUM(IF(b!='',a,0)) FROM table
ideascf
2017-07-27 12:32:35 +08:00
3 楼正解
reus
2017-07-27 12:41:29 +08:00
这都不会,也敢让你写?
where 没用过?
demoplayer88
2017-07-27 12:51:51 +08:00
就是判断为 0 不统计的意思嘛? if 直接写就行了啊…
sunsh217
2017-07-27 13:05:00 +08:00
5 楼说的对,用 where 过滤掉,不过这水准,问题很大啊。
xfspace
2017-07-27 13:33:09 +08:00
我日,这都能有工作
freestyleyooo
2017-07-27 14:25:48 +08:00
我日 很接地气啊
aksoft
2017-07-27 16:05:29 +08:00
工作和能力并不是直接的,人都有学习的阶段行不?潜力股
zeraba
2017-07-27 18:31:41 +08:00
楼主 想一下 一共 4 个字段 进货价 售价 实际售价 数量
假设字段值都正常 (实际售价 - 进货价)/进货价就是你们运营所谓的利润率 数量分子分母都有 抵消了
现在存在进货价没有或者为 0 的情况 直接将这部分设置为和实际售价一样 结果就是利润率为 0 这部分也是运营需要看的 而不是直接 where 筛选
so
select 商品 id,case when A = 0 then A = C else A end A,C
from 表名
就是你需要统计的清单 再做个查询算下利润率就行
当然你也可以直接在 case when 中算好
kran
2017-07-27 20:32:06 +08:00
where 并不怎么靠谱,想一下,需要 count 怎么办? 3 楼靠谱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX