Как вернуть OHLCV для каждой акции в наборе результатов - PullRequest
0 голосов
/ 22 октября 2019

Как выбрать список акций (AAPL, MSFT и т. Д.) И вернуть значения Open, High, Low, Close, Volume in day для EACH.

Я изучил временные таблицы, cte's и объединения, но не уверен, какой подход, даже если это должно быть сделано в БД (а не через обход веб-сервера).

SELECT ContractIDs from Contracts as XYZ  [= 1,2,3 etc]

затем для каждого из вышеперечисленных:

SELECT 
c1.utc as FirstTradeInPeriod, 
c2.utc as LastTradeInPeriod,            
c1.Price AS [Open], 
InnerSelect.High, 
InnerSelect.Low, 
c2.Price AS [Close], 
InnerSelect.Volume
FROM    (   SELECT
        Min(dbo.Trades.ID) AS openid,
        Max(dbo.Trades.ID) AS closeid,
        Min(dbo.Trades.Price) AS Low,
        Max(dbo.Trades.Price) AS High, 
        Sum(dbo.Trades.NumberOfContracts) AS Volume
    FROM    dbo.Trades
    WHERE    dbo.Trades.ContractID = XYZ
    AND  dbo.Trades.UTC > DATEADD(day, -7  , SYSDATETIME()) 
    GROUP BY DATEPART(dayofyear, dbo.Trades.UTC)

        )       AS InnerSelect

INNER JOIN dbo.Trades c1 ON c1.ID = InnerSelect.openid  
INNER JOIN dbo.Trades c2 ON c2.ID = InnerSelect.closeid 

Результаты за 7 дней для каждой из, скажем, 10 акций дают таблицу из 70 строк, которые затем будут сгруппированы (для диаграммы) веб-сервером. Это лучшая стратегия или было бы лучше, чтобы веб-сервер повторял каждый?

...