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.