Penjelasan sederhana
Running total atau total kumulatif adalah penjumlahan berjalan: di setiap baris, nilainya adalah total dari baris pertama sampai baris itu. Di Excel biasanya dibuat dengan rumus seperti =SUM($B$2:B2) lalu ditarik ke bawah.
Di SQL caranya dengan SUM(...) OVER (ORDER BY ...). Urutan di ORDER BY menentukan arah penjumlahannya, biasanya tanggal.
Sintaks
SUM(kolom) OVER (ORDER BY kolom_urut)
| Bagian | Keterangan |
|---|---|
ORDER BY | Urutan penjumlahan, biasanya tanggal. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh Running Total (SUM OVER)
Data contoh: penjualan
Tabel penjualan
| id | tanggal | karyawan_id | produk | kategori | qty | harga |
|---|---|---|---|---|---|---|
| 1 | 2026-01-05 | 4 | Laptop | Elektronik | 2 | 8500000 |
| 2 | 2026-01-12 | 6 | Printer | Elektronik | 1 | 2300000 |
| 3 | 2026-01-20 | 4 | Kursi Kantor | Furnitur | 5 | 1200000 |
| 4 | 2026-02-03 | 6 | Laptop | Elektronik | 1 | 8500000 |
| 5 | 2026-02-14 | 4 | Meja Kerja | Furnitur | 3 | 1750000 |
| 6 | 2026-02-25 | 5 | Kertas A4 | ATK | 20 | 55000 |
| 7 | 2026-03-02 | 6 | Kursi Kantor | Furnitur | 4 | 1200000 |
| 8 | 2026-03-10 | 4 | Printer | Elektronik | 2 | 2300000 |
| 9 | 2026-03-18 | 5 | Kertas A4 | ATK | 30 | 55000 |
| 10 | 2026-03-27 | 6 | Monitor | Elektronik | 3 | 1900000 |
SELECT tanggal, qty * harga AS omzet,
SUM(qty * harga) OVER (ORDER BY tanggal) AS kumulatif
FROM penjualan;
Hasil 10 baris
| tanggal | omzet | kumulatif |
|---|---|---|
| 2026-01-05 | 17000000 | 17000000 |
| 2026-01-12 | 2300000 | 19300000 |
| 2026-01-20 | 6000000 | 25300000 |
| 2026-02-03 | 8500000 | 33800000 |
| 2026-02-14 | 5250000 | 39050000 |
| 2026-02-25 | 1100000 | 40150000 |
| 2026-03-02 | 4800000 | 44950000 |
| 2026-03-10 | 4600000 | 49550000 |
| 2026-03-18 | 1650000 | 51200000 |
| 2026-03-27 | 5700000 | 56900000 |
Kolom kumulatif menunjukkan total omzet sejak awal tahun sampai tanggal tersebut.
Cara kerjanya, langkah demi langkah
FROM penjualan: 10 transaksi diambil.ORDER BY tanggal: transaksi diurutkan dari yang paling awal.- Baris pertama (5 Jan): kumulatifnya sama dengan omzetnya, 17.000.000.
- Baris kedua (12 Jan): 17.000.000 + 2.300.000 = 19.300.000. Baris ketiga: ditambah 6.000.000 menjadi 25.300.000.
- Begitu seterusnya sampai baris terakhir, yang nilainya sama dengan total seluruh omzet, 56.900.000.
Dipakai untuk apa di kantor?
- Memantau pencapaian target dari awal bulan sampai hari ini.
- Grafik pertumbuhan jumlah pelanggan dari waktu ke waktu.
- Saldo berjalan di buku kas.
Kesalahan yang sering terjadi
- Ada dua transaksi di tanggal yang sama. Keduanya bisa mendapat nilai kumulatif yang sama. Tambahkan kolom pengurut kedua, misalnya id:
ORDER BY tanggal, id.
LAG & LEAD