PostgreSQLで学ぶ時系列分析
Jasmin Ludolf
Content Developer, DataCamp

ROWS BETWEEN 句を使用UNBOUNDED PRECENDING AND CURRENT ROW: 現在行までの全過去行SELECT
id,
views,
AVG(views) OVER(
PARTITION BY id
ORDER BY ts
ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT ROW)
AS running_avg_views
FROM dc_news_fact;
ROWS BETWEEN 4 PRECEDING AND CURRENT ROW
(1) 1行前
(2) 2行前
(3) 3行前
(4) 4行前
(5) 現在行
SELECT id, ts, views,AVG(views) OVER (ORDER BY tsROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS moving_average_fiveFROM dc_news_fact;
| id| ts|views|moving_average_five|
|-----|-------------------|-----|-------------------|
|12121|2015-12-27 17:14:16| null| null|
|12121|2015-12-27 17:34:16| 23| 23.00000000000000|
|12121|2015-12-27 17:54:16| 10| 16.50000000000000|
|12121|2015-12-27 18:14:16| 8| 13.66666666666666|
|12121|2015-12-27 18:34:16| 4| 11.25000000000000|
|12121|2015-12-27 18:54:16| 7| 10.40000000000000|
|12121|2015-12-27 19:14:16| 0| 5.8000000000000000|
...
ROWS BETWEEN 5 PRECEDING AND 1 PRECEDINGSELECT
stock_symbol,
day,
daily_avg,
AVG(daily_avg) OVER(
PARTITION BY stock_symbol
ORDER BY day
ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
) AS avg_prev_five
FROM daily_stock_averages
ORDER BY stock_symbol, day;
PostgreSQLで学ぶ時系列分析