Rata-Rata Bergulir atau Rata-Rata Pergerakan adalah metrik berguna yang membantu Anda melacak nilai rata-rata selama periode pergerakan (mis. penjualan rata-rata selama 7 hari terakhir). Menghitung rata-rata bergerak dari waktu ke waktu memberikan tren yang lebih masuk akal, dibandingkan dengan memplot angka harian. Karena tidak ada fungsi bawaan untuk menghitung rata-rata pergerakan di Redshift, inilah kueri SQL untuk melakukannya.
Cara Menghitung Rata-Rata Pergerakan dalam Pergeseran Merah
Berikut adalah langkah-langkah untuk menghitung rata-rata bergerak di Redshift. Katakanlah Anda memiliki tabel berikut yang berisi informasi penjualan harian di Redshift.
# create table sales(order_date date,sale int); # insert into sales values('2020-01-01',20), ('2020-01-02',25),('2020-01-03',15),('2020-01-04',30), ('2020-01-05',20),('2020-01-10',20),('2020-01-06',25), ('2020-01-07',15),('2020-01-08',30),('2020-01-09',20); # select * from sales; +------------+------+ | order_date | sale | +------------+------+ | 2020-01-01 | 20 | | 2020-01-02 | 25 | | 2020-01-03 | 15 | | 2020-01-04 | 30 | | 2020-01-05 | 20 | | 2020-01-10 | 20 | | 2020-01-06 | 25 | | 2020-01-07 | 15 | | 2020-01-08 | 30 | | 2020-01-09 | 20 | +------------+------+
Katakanlah Anda ingin menghitung rata-rata pergerakan di Redshift selama 5 hari terakhir. Redshift (yang pada dasarnya adalah Postgresql) membuatnya sangat mudah dengan bantuan Fungsi Jendela Redshift. Berikut kueri SQL untuk menghitung rata-rata bergerak selama 5 hari terakhir. Kami akan melihatnya secara detail di bawah ini.
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 ;
Jika Anda ingin membulatkan hasil, Anda dapat menggunakan fungsi ROUND seperti yang ditunjukkan untuk menghitung rata-rata lari di Redshift
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; order_date | sale | avg_sales ------------+------+--------------- 2020-01-01 | 20 | 20.00 2020-01-02 | 25 | 22.50 2020-01-03 | 15 | 20.00 2020-01-04 | 30 | 22.50 2020-01-05 | 20 | 22.00 2020-01-06 | 25 | 23.00 2020-01-07 | 15 | 21.00 2020-01-08 | 30 | 24.00 2020-01-09 | 20 | 22.00 2020-01-10 | 20 | 22.00
Mari kita lihat kueri di atas secara detail. Fungsi AVG menghitung nilai rata-rata penjualan kolom. Namun, ketika kita menggunakannya bersama dengan fungsi WINDOW OVER, itu menghitung nilai rata-rata hanya untuk jendela yang kita definisikan.
Pertama, kami menggunakan ORDER BY pada data kami untuk memastikan bahwa baris diurutkan secara kronologis. Kemudian kita mendefinisikan jendela kita untuk rata-rata menggunakan fungsi OVER, dan menyebutkan ROWS BETWEEN 4 PRECEDING AND CURRENT ROW. Artinya, untuk setiap baris, hitung rata-rata untuk 4 baris sebelumnya dan baris saat ini. Saat bingkai jendela berubah untuk setiap baris, hanya 4 hari sebelumnya dan tanggal saat ini yang akan digunakan.
Anda juga dapat menambahkan filter dengan menambahkan klausa WHERE 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;
Jika Anda ingin menghitung rata-rata pergerakan dalam Pergeseran Merah selama 30 hari/1 bulan terakhir, ubah kueri di atas untuk menggunakan 29 BARIS SEBELUMNYA DAN BARIS SAAT INI
SELECT a.order_date,a.sale, round(AVG(a.sale) OVER(ORDER BY a.order_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW),2) AS avg_sales FROM sales a;
Bonus Baca : Cara Membuat Tabel Pivot di PostgreSQL
Cara Menghitung Rata-Rata Pergerakan dalam Pergeseran Merah Selama 3 Bulan Terakhir
Misalnya Anda memiliki data penjualan bulanan, bukan data harian, dan ingin menghitung rata-rata bergulir selama 3 bulan terakhir.
# create table monthly_sales(order_month date,sale int); postgres=# insert into monthly_sales values('2019-12-01',20), ('2020-01-30',25),('2020-02-28',15),('2020-03-31',30), ('2020-04-30',20),('2020-05-31',20),('2020-06-30',25), ('2020-07-31',15),('2020-08-31',30),('2020-09-30',20); postgres=# select * from monthly_sales; order_month | sale -------------+------ 2019-12-01 | 20 2020-01-30 | 25 2020-02-28 | 15 2020-03-31 | 30 2020-04-30 | 20 2020-05-31 | 20 2020-06-30 | 25 2020-07-31 | 15 2020-08-31 | 30 2020-09-30 | 20
Kami menggunakan logika yang sama untuk menghitung rata-rata bergerak di Redshift, dalam hal ini. PESANAN PERTAMA OLEH order_month kolom untuk memastikan baris diurutkan secara kronologis. Kemudian hitung 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 | 20 | 20.00 2020-01-30 | 25 | 22.50 2020-02-28 | 15 | 20.00 2020-03-31 | 30 | 23.33 2020-04-30 | 20 | 21.67 2020-05-31 | 20 | 23.33 2020-06-30 | 25 | 21.67 2020-07-31 | 15 | 20.00 2020-08-31 | 30 | 23.33 2020-09-30 | 20 | 21.67
Bonus Baca : Cara Menghitung Total Running di Redshift
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 pergerakan di Redshift, sesuai kebutuhan Anda.
Setelah Anda menghitung rata-rata pergerakan di Redshift, 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 Redshift, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.