首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义聚合

自定义聚合
EN

Stack Overflow用户
提问于 2013-09-14 18:23:18
回答 3查看 71关注 0票数 0

考虑一下Oracle中的一个简单的表:

代码语言:javascript
复制
buySell     quantity
--------------------
buy         200
sell        100
...

我们希望获得表的净数量,如果是净买入,则为正,否则为负。如何在一个查询中实现它?如果可能,最好使用通用解决方案(可用于其他DBMS)。但是,如果有一个更好的、仅供Oracle使用的解决方案,如果您也能分享它,将不胜感激。

更普遍的是,一种进行自定义聚合的方法(例如,在聚合之前,根据其他列的值将不同的数字与记录的数量相乘)。

EN

回答 3

Stack Overflow用户

发布于 2013-09-14 18:27:27

代码语言:javascript
复制
Select
    Sum(Case When buySell = 'sell' then -1 else 1 end * quantity)
From
    table
票数 2
EN

Stack Overflow用户

发布于 2013-09-14 18:27:22

您需要将sell转换为负数;因此将其乘以-1。

代码语言:javascript
复制
select sum( case when buysell = 'sell' then -1 * quantity
                 else quantity
            end ) as result
  from table

这应该适用于大多数SQL方言。

票数 0
EN

Stack Overflow用户

发布于 2013-09-16 19:36:32

你也可以这样做。

代码语言:javascript
复制
select sum(case when buysell = 'buy' then quantity else 0 end ) - 
       sum(case when buysell = 'sell' then quantity else 0 end )
 from table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18800719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档