Query Cek Kualitas Data di SQL (2026)
Blog/Tutorial SQL/Query Cek Kualitas Data di SQL (2026)

Query Cek Kualitas Data di SQL (2026)

BimaBima
·11 Desember 2026·11 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Cek kualitas data di SQL dilakukan lewat query yang nyari masalah umum: nilai kosong pakai COUNT dengan IS NULL, baris duplikat pakai GROUP BY dan HAVING, serta angka di luar akal pakai filter rentang. Jalanin cek ini sebelum analisis biar laporanmu nggak salah gara-gara data kotor. Empat cek dasar yang wajib: kelengkapan, keunikan, validitas rentang, dan konsistensi antar kolom. Lebih baik nemu masalah sekarang daripada pas laporan udah dipresentasiin.

Sebelum kamu bikin laporan dari data, cek dulu datanya bersih atau nggak. Satu duplikat atau nilai kosong bisa bikin kesimpulanmu salah, dan celakanya kamu nggak nyadar sampai ada yang protes.

SQL punya cara cepat buat berburu masalah ini. Beberapa query sederhana bisa nemu nilai kosong, baris dobel, dan angka yang nggak masuk akal.

Di bawah ini aku kasih kumpulan query cek kualitas data yang bisa langsung kamu pakai, plus studi kasus data penjualan toko yang datanya sempat bikin laporan meleset.

Apa itu cek kualitas data di SQL?

Cek kualitas data di SQL adalah proses jalanin query buat nemu masalah di data sebelum dipakai analisis. Query ini nyari nilai kosong, baris duplikat, angka aneh, dan data yang nggak konsisten. Tujuannya mastiin data bisa dipercaya, jadi laporan yang kamu bikin nggak salah.

Data kotor itu wajar, apalagi kalau datanya dari input manual atau gabungan banyak sumber.

Yang nggak wajar itu kalau kamu langsung analisis tanpa cek. Kamu lagi bangun kesimpulan di atas data yang mungkin bolong.

Empat cek dasar yang wajib kamu jalanin

Ada empat jenis cek yang nutupin mayoritas masalah data: kelengkapan (nilai kosong), keunikan (duplikat), validitas (rentang wajar), dan konsistensi (antar kolom masuk akal). Jalanin keempatnya sebelum analisis, dan kamu nangkep sebagian besar masalah lebih awal.

Jenis cekCari apaAlat SQL
KelengkapanNilai kosong atau NULLCOUNT, IS NULL
KeunikanBaris duplikatGROUP BY, HAVING
ValiditasAngka di luar akalWHERE dengan rentang
KonsistensiAntar kolom bentrokWHERE bandingin kolom

Aku bahas satu per satu di bawah, lengkap dengan query yang bisa langsung dipakai.

Gimana cara cek nilai kosong di SQL?

Pakai COUNT buat bandingin jumlah total baris dengan jumlah baris yang punya isi di tiap kolom. Selisihnya adalah jumlah nilai kosong. Fungsi COUNT di satu kolom cuma ngitung baris yang nggak NULL, jadi kamu bisa deteksi kolom mana yang banyak bolong.

SELECT
  COUNT(*) AS total_baris,
  COUNT(*) - COUNT(email) AS email_kosong,
  COUNT(*) - COUNT(kota) AS kota_kosong,
  COUNT(*) - COUNT(no_hp) AS hp_kosong
FROM pelanggan;

COUNT(*) ngitung semua baris. COUNT(email) cuma ngitung yang email-nya keisi. Selisihnya jumlah yang kosong.

Kalau kamu mau lihat baris mana aja yang kosong, saring pakai IS NULL:

SELECT * FROM pelanggan
WHERE email IS NULL;

Hati-hati bedain NULL sama string kosong. Kolom bisa keliatan kosong padahal isinya spasi. Cek juga arti NULL di SQL biar nggak ketuker.

Gimana cara nemu baris duplikat?

Pakai GROUP BY di kolom yang harusnya unik, lalu saring pakai HAVING COUNT lebih dari 1. Query ini nunjukin nilai mana yang muncul lebih dari sekali dan berapa kali. Ini cara standar buat berburu data ganda yang bikin total membengkak.

SELECT email, COUNT(*) AS jumlah
FROM pelanggan
GROUP BY email
HAVING COUNT(*) > 1
ORDER BY jumlah DESC;

GROUP BY ngumpulin baris berdasarkan email. HAVING nyaring cuma yang jumlahnya lebih dari 1. Hasilnya daftar email yang dobel.

Kalau duplikat ditentuin dari kombinasi kolom, misalnya nama dan tanggal lahir sama, masukin dua-duanya:

SELECT nama, tanggal_lahir, COUNT(*) AS jumlah
FROM pelanggan
GROUP BY nama, tanggal_lahir
HAVING COUNT(*) > 1;

Buat pemahaman lebih dalam soal GROUP BY, cek panduan GROUP BY di SQL.

Cara cek angka aneh dan konsistensi antar kolom

Pakai WHERE dengan batas rentang buat nangkep angka di luar akal, kayak jumlah negatif atau nilai yang kelewat besar. Buat konsistensi, bandingin dua kolom yang punya hubungan logis, misalnya tanggal kirim nggak boleh lebih awal dari tanggal order.

Cek angka di luar rentang wajar:

SELECT * FROM transaksi
WHERE jumlah < 0
   OR jumlah > 100000000;

Query ini nangkep transaksi bernilai negatif (mungkin salah input) dan yang kelewat besar (mungkin kelebihan nol). Sesuaikan batasnya dengan konteks bisnismu.

Cek konsistensi antar kolom tanggal:

SELECT * FROM transaksi
WHERE tanggal_kirim < tanggal_order;

Barang nggak mungkin dikirim sebelum dipesan. Baris yang muncul di sini pasti ada yang salah. Cek konsistensi kayak gini sering nangkep error yang lolos dari cek lain.

Studi kasus: data toko_berkah yang bikin laporan meleset

toko_berkah minta aku bikin laporan penjualan bulanan. Data transaksinya ada 8.400 baris. Sebelum analisis, aku jalanin empat cek dasar dulu, dan bagus aku lakuin itu.

Cek duplikat nemu 63 baris transaksi yang kecatat dua kali, gara-gara sistem kasir sempat error dan nyimpan ulang. Kalau nggak ketahuan, total penjualan bakal kelihatan lebih besar sekitar Rp4,7 juta dari yang sebenarnya.

SELECT id_transaksi, COUNT(*) AS jumlah
FROM transaksi
GROUP BY id_transaksi
HAVING COUNT(*) > 1;

Cek rentang nemu 5 transaksi bernilai negatif, ternyata itu retur yang salah dicatat sebagai penjualan biasa. Cek konsistensi tanggal nemu 12 baris dengan tanggal kirim mendahului tanggal order.

Total ada 80 baris bermasalah dari 8.400, sekitar 0,95 persen. Kelihatan kecil, tapi cukup buat bikin angka penjualan bulanan meleset dan salah ambil keputusan stok. Cek beberapa menit itu nyelametin laporan yang bakal dipresentasiin ke pemilik.

Kesalahan umum saat cek kualitas data

Pertama, langsung UPDATE atau DELETE begitu nemu masalah, tanpa lihat dulu. Selalu SELECT dulu buat mastiin baris yang bakal kena itu emang yang salah.

Kedua, cuma cek NULL, lupa string kosong dan spasi. Kolom bisa keliatan terisi padahal isinya nggak berguna. Cek dua-duanya.

Ketiga, ngira data yang kemarin bersih hari ini masih bersih. Input baru bisa bawa error baru. Jalanin cek tiap ada data masuk.

Keempat, pasang batas rentang asal-asalan. Batas Rp100 juta mungkin wajar buat grosir, tapi kekecilan buat transaksi properti. Sesuaikan batas dengan konteks bisnis.

Penutup

Cek kualitas data itu langkah kecil yang nyelametin dari kesimpulan besar yang salah. Tiga poin buat dipegang:

  • Jalanin empat cek: kelengkapan, keunikan, validitas, konsistensi.
  • Selalu SELECT dulu sebelum ngubah data.
  • Cek tiap ada data baru masuk, jangan cuma sekali.

Mau lancar nulis query kayak gini dan cek datamu sendiri? Latihan langsung di panduan belajar SQL dari nol. Buat referensi fungsi agregat resmi, cek juga dokumentasi fungsi agregat PostgreSQL.

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

Fungsi NTH_VALUE di SQL untuk Ambil Nilai ke-N (2026)
Tutorial SQL
29 Desember 2026•9 menit baca

Fungsi NTH_VALUE di SQL untuk Ambil Nilai ke-N (2026)

NTH_VALUE ngambil nilai baris ke-N dalam window, tapi frame default-nya sering bikin hasil NULL. Ini sintaksnya, cara benerin frame, plus contoh transaksi toko.

BimaBima
Running Max dan Min dengan Window Function SQL
Tutorial SQL
26 Desember 2026•11 menit baca

Running Max dan Min dengan Window Function SQL

Lacak nilai tertinggi dan terendah berjalan di SQL pakai window function MAX dan MIN OVER. Ini sintaks, frame clause, dan contoh rekor omzet toko.

BimaBima
Analisa Afinitas Produk (Cross-Sell) dengan SQL
Tutorial SQL
23 Desember 2026•12 menit baca

Analisa Afinitas Produk (Cross-Sell) dengan SQL

Produk apa yang sering dibeli bareng? Analisa afinitas produk pakai SQL self JOIN jawab itu. Ini cara hitung support, confidence, dan lift buat strategi cross-sell.

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