Trung bình trượt

Phân tích chuỗi thời gian trong PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Trung bình trượt là gì?

cửa sổ trượt

Phân tích chuỗi thời gian trong PostgreSQL

Trung bình trượt

  • Chỉ định các hàng để lấy trung bình
  • Dùng mệnh đề ROWS BETWEEN
  • UNBOUNDED PRECENDING AND CURRENT ROW: xét tất cả các hàng trước đến hàng hiện tại
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;
Phân tích chuỗi thời gian trong PostgreSQL

Tính trung bình trượt

  • Tính trung bình trượt cho 5 hàng:
    • ROWS BETWEEN 4 PRECEDING AND CURRENT ROW

 

(1) Hàng trước

(2) Hàng trước

(3) Hàng trước

(4) Hàng trước

(5) Hàng hiện tại

Phân tích chuỗi thời gian trong PostgreSQL

Tính trung bình trượt

SELECT
    id,
    ts,
    views,

AVG(views) OVER (
ORDER BY ts
ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS moving_average_five
FROM dc_news_fact;
Phân tích chuỗi thời gian trong PostgreSQL

Tính trung bình trượt: kết quả

|   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|
...
Phân tích chuỗi thời gian trong PostgreSQL

Tính trung bình trượt không gồm hàng hiện tại

  • ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
SELECT
    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;
Phân tích chuỗi thời gian trong PostgreSQL

Vamos praticar!

Phân tích chuỗi thời gian trong PostgreSQL

Preparing Video For Download...