Menghitung YTD, QTD, dan MTD di SQL (Panduan 2026)
Blog/Tutorial SQL/Menghitung YTD, QTD, dan MTD di SQL (Panduan 2026)

Menghitung YTD, QTD, dan MTD di SQL (Panduan 2026)

BimaBima
·17 Juli 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

YTD, QTD, dan MTD di SQL dihitung dengan nyaring tanggal mulai dari awal periode sampai hari ini pakai DATE_TRUNC. YTD dari awal tahun, QTD dari awal kuartal, MTD dari awal bulan. Kamu bisa gabung ketiganya dalam satu query pakai SUM dengan FILTER biar sekali jalan langsung dapet tiga angka.

YTD, QTD, dan MTD di SQL dihitung dengan nyaring baris mulai dari awal periode sampai hari ini, terus dijumlah. YTD dari awal tahun, QTD dari awal kuartal, MTD dari awal bulan.

Ketiga metrik ini muncul di hampir semua dashboard penjualan. Bos kamu pengin tahu 'total omzet tahun ini sampai sekarang berapa' tanpa harus nunggu tutup buku.

Di sini kamu bakal belajar cara ngitung masing-masing pakai DATE_TRUNC, terus digabung jadi satu query yang sekali jalan langsung ngasih tiga angka.

Apa itu YTD, QTD, dan MTD?

YTD (year to date), QTD (quarter to date), dan MTD (month to date) adalah total nilai dari awal sebuah periode sampai tanggal hari ini. Bedanya cuma di titik awal. YTD mulai dari 1 Januari, QTD dari hari pertama kuartal berjalan, dan MTD dari tanggal 1 bulan berjalan.

Contoh biar kebayang. Kalau hari ini 19 Juli 2026, maka YTD ngitung sejak 1 Januari 2026, QTD sejak 1 Juli 2026 (awal kuartal ketiga), dan MTD sejak 1 Juli 2026 juga.

Gimana cara ngitung YTD di SQL?

Kunci utamanya ada di fungsi DATE_TRUNC. Fungsi ini motong tanggal ke awal periode. DATE_TRUNC('year', tanggal) bakal balikin tanggal 1 Januari dari tahun tanggal itu. Jadi kamu nggak usah nulis '2026-01-01' manual.

SELECT SUM(nominal) AS ytd
FROM penjualan
WHERE tanggal >= DATE_TRUNC('year', CURRENT_DATE)
  AND tanggal <= CURRENT_DATE;

Baca query-nya gini: ambil semua baris yang tanggalnya dari awal tahun sampai hari ini, terus jumlahin kolom nominal. CURRENT_DATE adalah tanggal hari ini menurut database. Karena semuanya dinamis, query ini tetep bener walau dijalanin bulan depan atau tahun depan.

Gimana cara ngitung QTD dan MTD?

Polanya persis sama, kamu cuma ganti argumen pertama DATE_TRUNC. Buat QTD pakai 'quarter', buat MTD pakai 'month'. Ini tabel ringkasnya.

MetrikTitik awalDATE_TRUNC
YTDAwal tahunDATE_TRUNC('year', CURRENT_DATE)
QTDAwal kuartalDATE_TRUNC('quarter', CURRENT_DATE)
MTDAwal bulanDATE_TRUNC('month', CURRENT_DATE)

Jadi query MTD tinggal begini.

SELECT SUM(nominal) AS mtd
FROM penjualan
WHERE tanggal >= DATE_TRUNC('month', CURRENT_DATE)
  AND tanggal <= CURRENT_DATE;

Gabung YTD, QTD, dan MTD dalam satu query

Jalanin tiga query terpisah itu boros. Kamu bisa dapet ketiganya sekaligus pakai SUM dengan FILTER. Klausa FILTER bikin satu SUM cuma ngitung baris yang lolos kondisi tertentu.

SELECT
  SUM(nominal) FILTER (WHERE tanggal >= DATE_TRUNC('year', CURRENT_DATE))    AS ytd,
  SUM(nominal) FILTER (WHERE tanggal >= DATE_TRUNC('quarter', CURRENT_DATE)) AS qtd,
  SUM(nominal) FILTER (WHERE tanggal >= DATE_TRUNC('month', CURRENT_DATE))   AS mtd
FROM penjualan
WHERE tanggal <= CURRENT_DATE;

Sekali jalan, kamu dapet tiga kolom: ytd, qtd, mtd. Ini yang biasa nempel di kartu ringkasan atas dashboard.

Contoh kasus: laporan toko_berkah

Anggap toko_berkah, UMKM sembako di Bandung, punya tabel penjualan dengan kolom tanggal dan nominal. Pemiliknya mau tahu performa sampai hari ini, 19 Juli 2026.

Dari sampel data ngulikdata, query gabungan tadi ngasih hasil kayak gini.

YTDQTDMTD
Rp 487.300.000Rp 96.200.000Rp 96.200.000

Perhatiin QTD sama MTD angkanya sama persis, yaitu Rp 96.200.000. Itu bukan salah query. Tanggal 19 Juli masih di kuartal tiga yang baru mulai 1 Juli, jadi rentang QTD dan MTD kebetulan sama. Begitu masuk Agustus, dua angka ini bakal beda lagi.

Insight kecil yang berguna: MTD sudah nyentuh sekitar 20 persen dari total YTD cuma dalam 19 hari pertama Juli. Itu sinyal bulan ini lagi rame, mungkin ada momen belanja tertentu yang perlu dicek lebih lanjut.

Kesalahan umum saat ngitung YTD

Nulis tanggal awal manual. Banyak yang nulis WHERE tanggal >= '2026-01-01'. Query-nya bener sekarang, tapi 1 Januari tahun depan hasilnya jadi salah dan kamu harus edit ulang. Selalu pakai DATE_TRUNC biar dinamis.

Lupa batas atas. Kalau tabel kamu punya data masa depan (misalnya order terjadwal), tanpa AND tanggal <= CURRENT_DATE angkanya bakal kebawa. Kasih batas atas biar aman.

Salah tipe data tanggal. Kalau kolom tanggal kamu tersimpan sebagai teks, DATE_TRUNC bakal error atau ngasih hasil ngawur. Pastiin kolomnya bertipe date atau timestamp. Detail sintaks fungsi tanggal bisa kamu cek di dokumentasi resmi PostgreSQL.

FAQ

Pertanyaan yang sering muncul soal YTD, QTD, dan MTD di SQL.

Penutup

Inti dari YTD, QTD, dan MTD cuma satu: tentuin titik awal pakai DATE_TRUNC, batasi sampai CURRENT_DATE, terus jumlahin. Buat efisiensi, gabung ketiganya pakai SUM dengan FILTER biar sekali query langsung dapet tiga angka.

Mau lanjut ke metrik waktu yang lebih dinamis? Cek cara ngitung rolling 7 hari di SQL, atau pelajari date bucketing buat ngelompokin data per rentang waktu.

Pengin lancar nulis query analitik yang beneran dipakai di kerjaan? Latihan langsung di NgulikSQL, lengkap sama dataset toko biar kamu terbiasa sama kasus nyata.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Composite Index di SQL: Cara Kerja dan Urutan Kolom
Tutorial SQL
8 Oktober 2026•8 menit baca

Composite Index di SQL: Cara Kerja dan Urutan Kolom

Composite index itu index atas beberapa kolom sekaligus. Urutan kolomnya nentuin query mana yang kebantu, lewat aturan leftmost prefix.

BimaBima
Menghitung Stickiness (DAU/MAU) di SQL
Tutorial SQL
5 Oktober 2026•10 menit baca

Menghitung Stickiness (DAU/MAU) di SQL

Stickiness ngukur seberapa sering user balik lagi. Ini cara hitung DAU, MAU, dan rasio stickiness pakai SQL, plus contoh aplikasi UMKM.

BimaBima
Menghitung DAU dan MAU dengan SQL
Tutorial SQL
3 Oktober 2026•9 menit baca

Menghitung DAU dan MAU dengan SQL

DAU dan MAU dua metrik wajib buat produk digital. Ini cara hitungnya pakai SQL, lengkap query DISTINCT, per bulan, sampai rasio stickiness.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore