Q30📈Time Series & Analisis Tanggal★★☆☆☆Ganti tabel/kolomSafe to Run
7-Day Rolling Revenue
Dialect:bigquerypostgresqlsnowflakemysql
#rolling-avg#smoothing#window#revenue
Kapan Pakai Query Ini
Lihat tren revenue dengan smoothing mingguan. Gampang spot pola tanpa noise harian. Cocok buat weekly business review, atau pas mau detect dip yang nggak ke-cover sama daily fluctuation. Smoothing 7-hari juga otomatis netralin efek weekend vs weekday.
Yang Perlu Diganti
your_schema.orders→ nama tabel kamuorder_date→ kolom tanggal transaksi (DATE atau TIMESTAMP)revenue→ kolom nilai transaksi (numeric)
Query
SELECT order_date, revenue, AVG(revenue) OVER ( ORDER BY order_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS rolling_7d_avg FROM your_schema.orders ORDER BY order_date;
Contoh Output
| order_date | revenue | rolling_7d_avg |
|---|---|---|
| 2024-01-07 | 1500 | 1320.5 |
| 2024-01-08 | 1800 | 1410.2 |
| 2024-01-09 | 1200 | 1378.0 |
| 2024-01-10 | 2100 | 1525.4 |
Variasi
- Ganti
6→29untuk rolling 30 hari (monthly smoothing) - Tambah
WHERE order_date >= '2024-01-01'untuk batasi range - Ganti
AVG→SUMuntuk rolling cumulative total - Tambah
PARTITION BY product_iddiOVERclause untuk rolling per produk - Pakai
RANGE BETWEEN INTERVAL '6' DAY PRECEDING AND CURRENT ROW(PostgreSQL) kalau ada gap tanggal. Bedanya:RANGEitung berdasarkan nilai tanggal,ROWSitung berdasarkan posisi row
Variasi Dialect
PostgreSQL
Sama dengan BigQuery. Window function AVG(...) OVER (...) adalah ANSI SQL standard.
Snowflake
Sama dengan BigQuery.
MySQL (8.0+)
-- MySQL 8.0+ support window functions. Untuk MySQL < 8.0, butuh self-join pattern. SELECT order_date, revenue, AVG(revenue) OVER ( ORDER BY order_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS rolling_7d_avg FROM your_schema.orders ORDER BY order_date;