如何解决SQL on Access由于需要过滤,因此我不确定如何为我的数据查找AVG价格
我需要的数据是寻找特定日期我们购买或出售股票的平均价格。我将需要它按日期进行过滤,然后进行报价,然后进行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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。