Moving Average

การวิเคราะห์อนุกรมเวลาใน PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Moving average คืออะไร?

หน้าต่างเลื่อน

การวิเคราะห์อนุกรมเวลาใน PostgreSQL

Moving averages

  • ระบุแถวที่ต้องการหาค่าเฉลี่ย
  • ใช้ clause 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;
การวิเคราะห์อนุกรมเวลาใน PostgreSQL

คำนวณ moving average

  • คำนวณ moving average จาก 5 แถว:
    • ROWS BETWEEN 4 PRECEDING AND CURRENT ROW

 

(1) แถวก่อนหน้า

(2) แถวก่อนหน้า

(3) แถวก่อนหน้า

(4) แถวก่อนหน้า

(5) แถวปัจจุบัน

การวิเคราะห์อนุกรมเวลาใน PostgreSQL

คำนวณ moving average

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;
การวิเคราะห์อนุกรมเวลาใน PostgreSQL

คำนวณ moving average: ผลลัพธ์

|   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|
...
การวิเคราะห์อนุกรมเวลาใน PostgreSQL

คำนวณ moving average โดยไม่รวมแถวปัจจุบัน

  • 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;
การวิเคราะห์อนุกรมเวลาใน PostgreSQL

มาฝึกกันเถอะ!

การวิเคราะห์อนุกรมเวลาใน PostgreSQL

Preparing Video For Download...