SQL Academy · Pelajaran

Total Berjalan dan Rata-Rata Bergerak

Hitung jumlah berjalan dan rata-rata bergerak dengan SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...).

Pelajaran 4 dari 413 langkah

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?

Gratis untuk memulai

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

  1. OVER, PARTITION BY, ORDER BY
  2. ROW_NUMBER, RANK, DENSE_RANK
  3. LAG, LEAD, dan Pola Deret Waktu
  4. Total Berjalan dan Rata-Rata Bergerak
← Kembali ke SQL Academy