根据另一列中的值计算和聚合列(SQL)

根据另一列中的值计算和聚合列(SQL),sql,postgresql,Sql,Postgresql,我有一张由股票交易组成的表格。我需要计算每个交易者的利润(这里有一个例子,交易者“Ben”) 诀窍在于多头仓位是正数,而空头仓位是负数,因此根据交易情况,计算利润时需要稍加修改 逻辑如下: 多头仓位的利润为50(买入价为100,卖出价为150) 空头头寸利润为-45(以105的价格卖出,以150的价格买入) 利润总额=5 电子表格方式: -1*(quantity*tradeprice) + marketprice = 50 / Long position profit -1*(quantity

我有一张由股票交易组成的表格。我需要计算每个交易者的利润(这里有一个例子,交易者“Ben”)

诀窍在于多头仓位是正数,而空头仓位是负数,因此根据交易情况,计算利润时需要稍加修改

逻辑如下:

多头仓位的利润为50(买入价为100,卖出价为150)

空头头寸利润为-45(以105的价格卖出,以150的价格买入)

利润总额=5

电子表格方式:

-1*(quantity*tradeprice) + marketprice = 50 / Long position profit

-1*(quantity*tradeprice) - marketprice = -45 / Short position profit
我需要为每个交易者添加一个额外的列
利润


非常感谢,

这只是条件聚合。在您描述问题时:

select trader,
       sum(case when position = 'long' then (market_price - trade_price) * quantity
                when position = 'short' then (market_price - trade_price) * (- quantity)
           end)
from t
group by trader;
但是,您的样本数据表明:

select trader, sum( (market_price - trade_price) * quantity)
from t
group by trader;

数量在你们的两排上有正确的标志吗?
select trader, sum( (market_price - trade_price) * quantity)
from t
group by trader;