Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menghitung Rata-Rata Pergerakan dalam Pergeseran Merah

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hal-hal menarik tentang BUKAN pemicu

  2. Pembuatan Profil Basis Data di Meja Kerja IRI

  3. Mengonfigurasi Jaringan Khusus untuk Komunikasi Grup Ketersediaan

  4. Memahami Operator Pivot dalam SQL

  5. SQL Cross Gabung