Laporan Tanggal Umum (MTD, WoW, YoY)
Buat laporan bulan berjalan, minggu dibanding minggu sebelumnya, dan tahun dibanding tahun sebelumnya dengan date_trunc serta self-join atau fungsi jendela.
Laporan Tanggal Umum (MTD, WoW, YoY) 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.
Tiga Laporan Periode Klasik
Hampir setiap dasbor bisnis memerlukan:
- MTD — Dari Awal Bulan
- WoW — Minggu dibandingkan Minggu Sebelumnya
- YoY — Tahun dibandingkan Tahun Sebelumnya
Dari Awal Bulan
Jumlah bulan ini hingga saat ini:
SELECT SUM(total) AS mtd_revenue
FROM orders
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';Dari Awal Tahun
Pola yang sama, dengan tingkat perincian tahun:
SELECT SUM(total) AS ytd_revenue
FROM orders
WHERE created_at >= date_trunc('year', NOW());Minggu dibandingkan Minggu Sebelumnya
Bandingkan minggu ini dengan minggu sebelumnya:
SELECT
SUM(total) FILTER (
WHERE created_at >= date_trunc('week', NOW())
) AS this_week,
SUM(total) FILTER (
WHERE created_at >= date_trunc('week', NOW()) - INTERVAL '1 week'
AND created_at < date_trunc('week', NOW())
) AS last_week
FROM orders
WHERE created_at >= date_trunc('week', NOW()) - INTERVAL '1 week';Tahun dibandingkan Tahun Sebelumnya
Periode yang sama dibandingkan periode yang sama tahun lalu:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
WHERE created_at >= NOW() - INTERVAL '2 years'
GROUP BY 1
ORDER BY 1;
-- Then plot with two lines: current year, previous year.Deret Harian Tanpa Celah
Jika tidak ada pesanan pada suatu hari, GROUP BY akan melewatinya. Buat deret kalender lengkap lalu gunakan LEFT JOIN:
SELECT day, COALESCE(SUM(o.total), 0) AS revenue
FROM generate_series(
CURRENT_DATE - INTERVAL '30 days',
CURRENT_DATE,
INTERVAL '1 day'
) AS day
LEFT JOIN orders o ON date_trunc('day', o.created_at) = day
GROUP BY day
ORDER BY day;Total Berjalan
Fungsi jendela menghitung jumlah berjalan tanpa JOIN mandiri:
SELECT day,
revenue,
SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue
ORDER BY day;Selisih Antarperiode
Pertumbuhan tahun-ke-tahun menggunakan LAG:
SELECT month,
revenue,
LAG(revenue, 12) OVER (ORDER BY month) AS prev_year,
(revenue - LAG(revenue, 12) OVER (ORDER BY month))
/ NULLIF(LAG(revenue, 12) OVER (ORDER BY month), 0) AS yoy_growth
FROM monthly_revenue;7 / 30 Hari Terakhir (Jendela Bergulir)
Jendela bergulir dibandingkan periode yang diselaraskan dengan kalender. Pilih makna yang benar-benar digunakan bisnis Anda:
-- Trailing 7 days, ending now:
WHERE created_at >= NOW() - INTERVAL '7 days';
-- This calendar week, from Monday:
WHERE created_at >= date_trunc('week', NOW());Pertimbangan Zona Waktu
"Hari ini" bergantung pada zona pengguna. Konversikan sebelum melakukan pemotongan:
SELECT date_trunc('day', created_at AT TIME ZONE 'America/Los_Angeles') AS la_day,
COUNT(*)
FROM events
GROUP BY 1;Pra-Agregasi dengan Tampilan Materialisasi
Jika laporan dijalankan setiap kali halaman dimuat, materialisasikan sekali sehari. Materi ini dibahas dalam Tampilan Materialisasi.
Ringkasan
Laporan periode mengandalkan beberapa pola.
- Interval setengah terbuka dengan date_trunc
- FILTER untuk kelompok periode yang berjalan paralel
- generate_series + LEFT JOIN untuk mengisi hari yang kosong
- LAG untuk selisih antarperiode
Pemeriksaan Singkat
Ekspresi mana yang menandai "momen pertama bulan 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 “Laporan Tanggal Umum (MTD, WoW, YoY)” gratis?
Ya — teks lengkap “Laporan Tanggal Umum (MTD, WoW, YoY)” 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 “Laporan Tanggal Umum (MTD, WoW, YoY)”?
Buat laporan bulan berjalan, minggu dibanding minggu sebelumnya, dan tahun dibanding tahun sebelumnya dengan date_trunc serta self-join atau fungsi jendela. 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 “Laporan Tanggal Umum (MTD, WoW, YoY)” 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
- Aritmetika Tanggal dan INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- Zona Waktu: TIMESTAMP vs TIMESTAMPTZ
- Laporan Tanggal Umum (MTD, WoW, YoY)