问题描述
我需要的数据是寻找特定日期我们购买或出售股票的平均价格。我将需要它按日期进行过滤,然后进行报价,然后进行SIDE(买入或卖出),然后找到价格的平均值。
数据如下:
ID TradeDate Ticker Side Quantity Price
1 10/01/2020 WTRE Buy 100 27.5
1 10/01/2020 WTRE Buy 100 27.75
1 10/01/2020 WTRE Buy 50 27.75
1 10/01/2020 WTRE Buy 100 27.67
1 10/01/2020 WTRE Buy 1 27.67
1 10/01/2020 WTRE Buy 49 27.67
解决方法
这是您想要的吗?
select tradedate,ticker,side,sum(quantity * price) / sum(quantity)
from t
group by tradedate,side;
这将计算“加权”平均值,它实际上是每股的平均价格。
如果您想要“买入”和“卖出”的平均值,请使用条件聚合和算术运算:
select tradedate,(sum(iif(side = "buy",quantity * price,0)) / sum(iif(side = "buy",quantity,null)) +
sum(iif(side = "sell",0)) / sum(iif(side = 'sell',null))
) / 2
from t
group by tradedate,ticker;
这假设每天和股票行情都有买卖。
否则,只需使用nz()
:
select tradedate,(nz(sum(iif(side = "buy",0)) / sum(iif(side = 'buy',null))) +
nz(sum(iif(side = "sell",null)))
) / 2
from t
group by tradedate,ticker;