微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL on Access由于需要过滤,因此我不确定如何为我的数据查找AVG价格

如何解决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 举报,一经查实,本站将立刻删除。