繁体   English   中英

MS Access查询的SQL语句以计算季度增长率

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM