我有一个查询来选择一些运输成本,我想用一种特殊的方式来总结它们。
样本数据:
supplierID | articleID | sumUP | shippingCost
10 | 100 | 1 | 20
10 | 101 | 1 | 15
20 | 200 | 0 | 15
20 | 201 | 0 | 10
30 | 300 | 0 | 10
=============================================
Sum should be: 60
我想实现的是汇总所有shippingCost
值,但是由于sumUP
和supplierID 20
上的30
为0
,所以我只想获得这些供应商的最大值。
so
供应商10应具有35(值的总和)
供应商20应该有15(最大值)
供应商30应该有10(最大值)
总计应该为60。
我尝试了很多复杂的查询,但是当我以后想要决定求和或取最大和求和时,总是卡住。
使用mysql语句甚至可能吗? (当然是其中的子查询)。
任何建议如何解决这个问题?
使用case
表达式返回SUM()
或MAX()
:
select supplierID,
case when max(sumUP) = 1 then sum(shippingCost) else max(shippingCost) end
from tablename
grouo by supplierID