Total Berjalan dan Rata-Rata Bergerak
Hitung jumlah berjalan dan rata-rata bergerak dengan SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...).
Total Berjalan dan Rata-Rata Bergerak adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Dasar-Dasar Total Berjalan
Total berjalan adalah SUM dengan ORDER BY dalam jendela — dan tanpa klausa bingkai, sehingga bingkai bawaannya adalah "dari awal hingga baris saat ini":
SELECT day, revenue,
SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue
ORDER BY day;Total Berjalan per Grup
Atur ulang total berjalan untuk setiap pengguna:
SELECT id, user_id, total,
SUM(total) OVER (
PARTITION BY user_id ORDER BY created_at
) AS user_running_total
FROM orders;Rata-Rata Bergerak
Rata-rata bergerak N hari menggunakan bingkai ROWS:
SELECT day, revenue,
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS avg_7d
FROM daily_revenue;Rata-Rata Bergerak Terpusat
Jendela 7 hari terpusat (3 hari sebelumnya, hari saat ini, 3 hari setelahnya):
SELECT day, revenue,
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS avg_7d_centred
FROM daily_revenue;Distribusi Kumulatif
Berapa bagian dari total pendapatan yang telah dicapai pada setiap hari?
SELECT day, revenue,
SUM(revenue) OVER (ORDER BY day)
/ SUM(revenue) OVER () AS cum_share
FROM daily_revenue;ROWS vs RANGE
ROWS— menghitung baris secara fisik (N baris sebelum/sesudah)RANGE— mencakup rentang nilai secara logis (misalnya 7 hari berdasarkan nilai tanggal)
-- ROWS: 6 previous rows + this one (may skip dates with no data)
AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
-- RANGE: include any row with a day within '6 days' of the current row
AVG(revenue) OVER (ORDER BY day RANGE BETWEEN INTERVAL '6 days' PRECEDING AND CURRENT ROW)Maksimum Kumulatif
Nilai terbaik sejauh ini pada setiap titik:
SELECT day, total_users,
MAX(total_users) OVER (ORDER BY day) AS peak_so_far
FROM daily_metrics;Hitungan Kumulatif
Total peristiwa yang terlihat hingga baris ini:
SELECT id, ts,
COUNT(*) OVER (ORDER BY ts) AS events_so_far
FROM events;Menemukan Anomali
Bandingkan pendapatan hari ini dengan garis dasar bergerak:
SELECT day, revenue, avg_7d,
CASE WHEN revenue < 0.5 * avg_7d THEN 'WARNING' ELSE 'OK' END AS status
FROM (
SELECT day, revenue,
AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS avg_7d
FROM daily_revenue
) sub;NULL Awal
Dengan jendela 7 baris, 6 baris pertama memiliki rata-rata NULL/sebagian. Tentukan apakah Anda ingin menyembunyikannya atau menganggap jendela sebagian sebagai valid.
Kinerja
Agregat berjalan memerlukan input yang diurutkan berdasarkan partisi. Indeks pada kolom ORDER BY menghindari pengurutan.
Ringkasan
Bingkai memungkinkan perhitungan berjalan.
- Bingkai bawaan dengan ORDER BY = "awal hingga baris saat ini"
ROWS BETWEEN n PRECEDING AND CURRENT ROW= jendela bergerak- SUM/AVG/MAX pada jendela = kumulatif atau bergerak
Pemeriksaan Singkat
Klausa bingkai mana yang memberikan rata-rata bergerak 7 hari hingga baris saat ini?
Belajar SQL dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Total Berjalan dan Rata-Rata Bergerak” gratis?
Ya — teks lengkap “Total Berjalan dan Rata-Rata Bergerak” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Total Berjalan dan Rata-Rata Bergerak”?
Hitung jumlah berjalan dan rata-rata bergerak dengan SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...). Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Total Berjalan dan Rata-Rata Bergerak” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD, dan Pola Deret Waktu
- Total Berjalan dan Rata-Rata Bergerak