[英]SQL Statement for MS Access Query to Calculate Quarterly Growth Rate
我在MS Access数据库中有一个名为“ Historical_Stock_Prices”的表。 该表具有以下列:行情指示器,日期1,打开1,高,低,关闭1,音量,调整_关闭。 这些行包含每个工作日每个股票的数据。
我需要从VB.net程序内部运行查询,该查询将返回程序中的表,该表显示列出的每个股票代号的每年每个季度的增长率。 因此,对于此示例,我需要找到GOOG在2012年第4季度的增长率。
要手动计算,我需要将第四季度的最后一个营业日(2012年12月31日)的收盘价除以第四季度的第一个营业日(2012年1月1日)的开盘价。 然后我需要减去1再乘以100才能得到一个百分比。
实际计算如下所示:((707.38 / 759.05)-1)* 100 = -6.807%
每个季度的第一天和最后一天可能会因周末而有所不同。
我无法为SQL语句提供正确的语法,从而无法从原始历史价格表中创建增长率表。 谁能帮助我处理SQL语句?
这是解决问题的方法:
我将从创建一个名为[Stock_Price_with_qtr]的已保存查询访问开始,该查询将计算每一行的年和季度:
SELECT
Historical_Stock_Prices.*,
Year([Date1]) AS Yr,
Switch(Month([Date1])<4,1,Month([Date1])<7,2,Month([Date1])<10,3,True,4) AS Qtr
FROM Historical_Stock_Prices
然后,我将在Access中创建另一个名为[Qtr_Dates]的保存的查询,该查询查找每个股票报价和季度的第一个和最后一个工作日:
SELECT
Stock_Price_with_qtr.Ticker,
Stock_Price_with_qtr.Yr,
Stock_Price_with_qtr.Qtr,
Min(Stock_Price_with_qtr.Date1) AS Qtr_Start,
Max(Stock_Price_with_qtr.Date1) AS Qtr_End
FROM Stock_Price_with_qtr
GROUP BY
Stock_Price_with_qtr.Ticker,
Stock_Price_with_qtr.Yr,
Stock_Price_with_qtr.Qtr
这样一来,我就可以在VB.NET(或C#或Access本身)中使用以下查询来计算季度增长率:
SELECT
Qtr_Dates.Ticker,
Qtr_Dates.Yr,
Qtr_Dates.Qtr,
(([Close_Prices]![Close1]/[Open_Prices]![Open1])-1)*100 AS Qtr_Growth
FROM
(
Historical_Stock_Prices AS Open_Prices
INNER JOIN Qtr_Dates
ON (Open_Prices.Ticker = Qtr_Dates.Ticker)
AND (Open_Prices.Date1 = Qtr_Dates.Qtr_Start)
)
INNER JOIN
Historical_Stock_Prices AS Close_Prices
ON (Qtr_Dates.Ticker = Close_Prices.Ticker)
AND (Qtr_Dates.Qtr_End = Close_Prices.Date1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.