PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Menghitung Rata-Rata Pergerakan di PostgreSQL

Rata-Rata Pergerakan atau Rata-Rata Bergulir memungkinkan Anda menghitung rata-rata selama periode waktu bergerak, seperti 7 hari terakhir. Menghitung rata-rata bergerak dari waktu ke waktu memberikan tren yang lebih mulus, dibandingkan dengan melacak angka harian. Berikut kueri SQL untuk menghitung rata-rata bergerak di PostgreSQL.

Cara Menghitung Rata-Rata Pergerakan di PostgreSQL

Berikut cara menghitung rata-rata bergerak di PostgreSQL. Katakanlah Anda memiliki tabel berikut

postgres=# create table sales(order_date date,sale int);

postgres=# insert into sales values('2020-04-01',210),
           ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230),
           ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25),
           ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250);

postgres=# select * from sales;
 order_date | sale
------------+------
 2020-04-01 |  210
 2020-04-02 |  125
 2020-04-03 |  150
 2020-04-04 |  230
 2020-04-05 |  200
 2020-04-10 |  220
 2020-04-06 |   25
 2020-04-07 |  215
 2020-04-08 |  300
 2020-04-09 |  250

Bonus Baca :Cara Mengimpor file CSV di PostgreSQL

Katakanlah Anda ingin menghitung rata-rata bergerak di PostgreSQL selama 5 hari terakhir. PostgreSQL memungkinkan Anda menghitung rata-rata bergulir dengan bantuan Fungsi Jendela. Berikut kueri untuk menghitung rata-rata bergerak di PostgreSQL selama 5 hari terakhir. Kami akan melihatnya secara detail

SELECT a.order_date,a.sale, 
       AVG(a.sale)
       OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW)
       AS avg_sales
       FROM sales a ;
 order_date | sale |      avg_sales
------------+------+----------------------
 2020-04-01 |  210 | 210.00
 2020-04-02 |  125 | 167.50
 2020-04-03 |  150 | 161.66
 2020-04-04 |  230 | 178.75
 2020-04-05 |  200 | 183.00
 2020-04-06 |   25 | 146.00
 2020-04-07 |  215 | 164.00
 2020-04-08 |  300 | 194.00
 2020-04-09 |  250 | 198.00
 2020-04-10 |  220 | 202.00

Dalam kueri di atas, fungsi AVG menghitung nilai rata-rata penjualan kolom. Ketika kita menggunakannya dengan fungsi Window OVER, itu menghitung rata-rata hanya untuk jangka waktu yang kita tentukan.

Untuk menghitung rata-rata bergerak di PostgreSQL, pertama-tama kita mengurutkan baris secara kronologis menggunakan klausa ORDER BY. Kemudian kita mendefinisikan Window kita untuk menghitung rata-rata, menggunakan BARIS ANTARA 4 SEBELUMNYA DAN BARIS LANCAR. Ini berarti bahwa untuk setiap baris hitung rata-rata hanya untuk baris saat ini dan 4 baris sebelumnya. Jadi untuk setiap baris hanya nilai 5 hari terakhir yang dipertimbangkan.

Anda juga dapat menambahkan filter dan membulatkan nilai rata-rata dengan menambahkan klausa WHERE dan fungsi ROUND dalam kueri SQL di atas.

 SELECT a.order_date,a.sale, 
       round(AVG(a.sale)
       OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW),2) 
       AS avg_sales
       FROM sales a
       WHERE condition;

Bonus Baca:Hitung Pertumbuhan Bulan ke Bulan di PostgreSQL

Cara Menghitung rata-rata pergerakan 30 hari di PostgreSQL

Demikian pula, jika Anda ingin menghitung rata-rata pergerakan 30 hari di PostgreSQL, Anda dapat memodifikasi kueri di atas, dengan mempertimbangkan 29 baris sebelumnya dan baris saat ini

SELECT a.order_date,a.sale, 
       AVG(a.sale)
       OVER(ORDER BY a.order_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW)
       AS avg_sales
       FROM sales a ;

Cara Menghitung rata-rata pergerakan 3 bulan di PostgreSQL

Jika Anda memiliki data penjualan harian, dan ingin menghitung rata-rata pergerakan 3 bulan di PostgreSQL, Anda dapat mengubah kueri di atas, dengan mempertimbangkan 89 baris sebelumnya dan baris saat ini

SELECT a.order_date,a.sale, 
       AVG(a.sale)
       OVER(ORDER BY a.order_date ROWS BETWEEN 89 PRECEDING AND CURRENT ROW)
       AS avg_sales
       FROM sales a ;

Katakanlah Anda memiliki data bulanan, bukan data harian, dan ingin menghitung rata-rata bergulir selama 3 bulan terakhir

postgres=# create table monthly_sales(order_month date,sale int);

postgres=# insert into monthly_sales values('2019-12-01',120),
           ('2020-01-30',250),('2020-02-28',150),('2020-03-31',300),
           ('2020-04-30',200),('2020-05-31',200),('2020-06-30',250),
           ('2020-07-31',150),('2020-08-31',300),('2020-09-30',200);

postgres=# select * from monthly_sales;
 order_month | sale
-------------+------
 2019-12-01  |  120
 2020-01-30  |  250
 2020-02-28  |  150
 2020-03-31  |  300
 2020-04-30  |  200
 2020-05-31  |  200
 2020-06-30  |  250
 2020-07-31  |  150
 2020-08-31  |  300
 2020-09-30  |  200

Bonus Baca:Cara Menghitung Tingkat Retensi di SQL

Kami menggunakan logika yang sama seperti di atas, untuk menghitung rata-rata bergulir di PostgreSQL. Pertama, kami mengurutkan baris secara kronologis, lalu menggunakan fungsi OVER window untuk menghitung rata-rata untuk 2 baris sebelumnya dan baris saat ini .

SELECT a.order_month,a.sale,
        round(AVG(a.sale)
        OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) 
        AS avg_sales
        FROM monthly_sales a ;

 order_month | sale | avg_sales
-------------+------+-----------
 2019-12-01  |  120 |    120.00
 2020-01-30  |  250 |    185.00
 2020-02-28  |  150 |    173.33
 2020-03-31  |  300 |    233.33
 2020-04-30  |  200 |    216.67
 2020-05-31  |  200 |    233.33
 2020-06-30  |  250 |    216.67
 2020-07-31  |  150 |    200.00
 2020-08-31  |  300 |    233.33
 2020-09-30  |  200 |    216.67

Bonus Baca:Cara Membuat Tabel Pivot di PostgreSQL

Anda juga dapat menambahkan filter dengan memasukkan klausa WHERE dalam kueri SQL di atas.

 SELECT a.order_month,a.sale,
        round(AVG(a.sale)
        OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) 
        AS avg_sales
        FROM monthly_sales a
        WHERE condition;

Anda dapat menyesuaikan kueri di atas untuk menghitung rata-rata bergerak di PostgreSQL, sesuai kebutuhan Anda.

Setelah Anda menghitung rata-rata pergerakan di PostgreSQL, Anda dapat menggunakan alat bagan untuk memplotnya pada bagan garis dan membagikannya dengan tim Anda. Berikut adalah contoh diagram garis yang memvisualisasikan rata-rata bergerak, dibuat menggunakan Ubiq.

Jika Anda ingin membuat grafik, dasbor &laporan dari database PostgreSQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri N baris terkait terakhir per baris

  2. Memperbarui JLabel melalui SetIcon dari tipe data bytea di postgres

  3. anotasi hibernasi yang tepat untuk byte[]

  4. Ambil catatan yang bukan nol setelah titik desimal di PostgreSQL

  5. ClassNotFoundException dengan PostgreSQL dan JDBC