Gets the closing price of a set of 10 stocks over a 10-year period, and groups the data into weekly, monthly, and yearly aggregates.
The hist_qry1 query uses the ROLLUP operator. The NULL values for month and week are subtotals. A NULL value in the week column is a subtotal for the month. A NULL value in the month and week columns is a subtotal for the year.
The first 25 rows returned by this query are:
TRADING_SYMBOL YEAR MON WEEK MAX_PRICE MIN_PRICE AVG_PRICE AAA 2005 2 7 26.24 25.48 25.925 AAA 2005 2 8 26.49 25.46 25.972 AAA 2005 2 9 27.28 26.48 26.746 AAA 2005 2 10 26.47 26.47 26.47 AAA 2005 2 (NULL) 27.28 25.46 26.25066667 AAA 2005 3 10 26.46 25.93 26.2625 AAA 2005 3 11 26.19 24.9 25.566 AAA 2005 3 12 26.16 25.38 25.792 AAA 2005 3 13 25.38 24.37 24.924 AAA 2005 3 14 25.61 25.11 25.36 AAA 2005 3 (NULL) 26.46 24.37 25.56086957 AAA 2005 4 14 25.87 25.87 25.87 AAA 2005 4 15 26.39 25.34 25.866 AAA 2005 4 16 26.1 25.07 25.634 AAA 2005 4 17 25.81 24.81 25.314 AAA 2005 4 18 27.94 26.59 27.284 AAA 2005 4 (NULL) 27.94 24.81 26.01714286 AAA 2005 5 19 27.1 26.55 26.828 AAA 2005 5 20 27.08 26.29 26.71 AAA 2005 5 21 27.08 26.54 26.862 AAA 2005 5 22 28.45 27.07 27.836 AAA 2005 5 23 27.88 27.6 27.74 AAA 2005 5 (NULL) 28.45 26.29 27.12090909 AAA 2005 6 23 27.05 26.24 26.69 ...
-- Get the closing price of a set of 10 stocks for a 10-year period and -- group into weekly, monthly and yearly aggregates. -- For each aggregate period determine the low, high and average closing -- price value. -- The output should be sorted by INSTRUMENT_ID and trade date. commit ; SELECT sh.TRADING_SYMBOL, DATEPART(yy,sh.TRADE_DATE) AS YEAR, DATEPART(mm,sh.TRADE_DATE) AS MON, DATEPART(wk,sh.TRADE_DATE) AS WEEK, MAX(sh.CLOSE_PRICE) AS MAX_PRICE, MIN(sh.CLOSE_PRICE) AS MIN_PRICE, AVG(sh.CLOSE_PRICE) AS AVG_PRICE FROM STOCK_HISTORY sh WHERE sh.TRADE_DATE BETWEEN '2005-02-08' and '2015-02-07' and sh.TRADING_SYMBOL in ('AAA','AAB','AAC','AAD','AAE','AAF','AAG','AAH','AAI','AAJ' ) GROUP BY ROLLUP ( sh.TRADING_SYMBOL, DATEPART(yy,sh.TRADE_DATE), DATEPART(mm,sh.TRADE_DATE), DATEPART(wk,sh.TRADE_DATE)) ;