Menghitung Standar Deviasi dan Varians di SQL: Panduan Lengkap
Blog/Tutorial SQL/Menghitung Standar Deviasi dan Varians di SQL: Panduan Lengkap

Menghitung Standar Deviasi dan Varians di SQL: Panduan Lengkap

BimaBima
·29 November 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Standar deviasi ngukur seberapa jauh data nyebar dari rata-ratanya, dan varians adalah kuadrat dari standar deviasi. Di SQL kamu hitung pakai STDDEV_SAMP dan STDDEV_POP buat standar deviasi, serta VAR_SAMP dan VAR_POP buat varians. Pakai versi SAMP kalau datamu sampel dari populasi yang lebih besar, dan versi POP kalau datamu populasi lengkap. Standar deviasi juga kepakai buat deteksi outlier, yaitu nilai yang jaraknya lebih dari dua standar deviasi dari rata-rata.

Standar deviasi ngukur seberapa jauh data kamu nyebar dari rata-ratanya, dan di SQL kamu bisa hitung langsung pakai STDDEV_SAMP. Rata-rata doang sering nyesatin. Dua cabang bisa punya rata-rata omzet sama, tapi yang satu stabil dan yang satu naik turun ekstrem.

Standar deviasi yang ngasih tau bedanya. Varians juga, cuma dalam satuan kuadrat yang lebih jarang kepakai langsung.

Di bawah ini cara ngitung standar deviasi dan varians di SQL, beda sample dan population, plus cara pakainya buat deteksi outlier.

Apa itu standar deviasi dan varians?

Standar deviasi adalah angka yang nunjukin seberapa jauh nilai-nilai data nyebar dari rata-ratanya. Makin besar, makin nyebar. Varians adalah kuadrat dari standar deviasi, jadi dua-duanya ngukur hal yang sama dengan satuan beda.

Kenapa penting? Karena rata-rata nyembunyiin variasi. Omzet rata-rata Rp 10 juta per hari bisa berarti selalu sekitar Rp 10 juta, atau lompat-lompat antara Rp 2 juta dan Rp 18 juta. Standar deviasi yang mbedain dua situasi itu. Definisi ringkasnya ada di glossary standar deviasi.

Buat dasar rata-rata yang jadi acuannya, cek SUM dan AVG di SQL.

Gimana cara menghitung standar deviasi di SQL?

Di PostgreSQL, pakai fungsi agregat STDDEV_SAMP buat standar deviasi. Cara pakainya sama kayak AVG atau SUM.

SELECT
  ROUND(AVG(omzet)::numeric, 0)          AS rata_rata,
  ROUND(STDDEV_SAMP(omzet)::numeric, 0)  AS standar_deviasi,
  ROUND(VAR_SAMP(omzet)::numeric, 0)     AS varians
FROM penjualan_harian;

Baca hasilnya bareng rata-rata. Standar deviasi Rp 1 juta dengan rata-rata Rp 10 juta artinya data kamu cukup stabil. Standar deviasi Rp 6 juta dengan rata-rata yang sama artinya datamu lompat-lompat jauh.

::numeric dan ROUND cuma buat ngerapiin hasil biar nggak keluar desimal panjang. Kalau pembulatan masih bikin bingung, aku bahas di ROUND SQL.

Sample atau population: pakai yang mana?

SQL punya dua versi standar deviasi, dan bedanya sering bikin bingung. Ini patokan cepatnya.

  • STDDEV_SAMP buat sample, waktu datamu cuma sebagian dari populasi lebih besar. Dia bagi dengan n dikurangi 1.
  • STDDEV_POP buat population, waktu datamu mencakup seluruh populasi. Dia bagi dengan n.

Buat data bisnis, hampir selalu pakai versi sample. Alasannya, data yang kamu punya biasanya cuma potongan waktu tertentu, bukan seluruh riwayat toko. STDDEV tanpa embel-embel di PostgreSQL sama dengan STDDEV_SAMP.

Selisih dua versi ini kecil kalau datamu ratusan baris. Tapi kalau cuma 10 baris, bedanya kelihatan, jadi pilih yang bener sesuai konteks data.

Gimana cara hitung standar deviasi per kelompok?

Satu angka standar deviasi buat seluruh data nyembunyiin perbedaan antar kelompok. Pecah per cabang atau per bulan pakai GROUP BY biar kelihatan mana yang stabil dan mana yang liar.

SELECT
  cabang,
  ROUND(AVG(omzet)::numeric, 0)                          AS rata_rata,
  ROUND(STDDEV_SAMP(omzet)::numeric, 0)                  AS std_dev,
  ROUND(STDDEV_SAMP(omzet)::numeric
        / NULLIF(AVG(omzet), 0), 3)                       AS coef_variasi
FROM penjualan_harian
GROUP BY cabang
ORDER BY coef_variasi DESC;

Kolom coef_variasi itu koefisien variasi, yaitu standar deviasi dibagi rata-rata. Angka ini bikin kamu bisa banding kestabilan antar cabang yang rata-ratanya beda. NULLIF(AVG(omzet), 0) nyegah error bagi nol kalau ada cabang yang rata-ratanya nol.

Contoh kasus: kestabilan omzet antar cabang toko_berkah

Ini data omzet harian 3 cabang toko_berkah selama 30 hari. Semua angka dari dataset ngulikdata.

CabangRata-rata (Rp juta)Standar deviasi (Rp juta)Koef variasi
Cabang A9,81,20,12
Cabang B9,64,70,49
Cabang C9,91,50,15

Tiga cabang ini rata-ratanya mirip, sekitar Rp 9,7 juta per hari. Kalau cuma lihat rata-rata, ketiganya keliatan sama sehat. Tapi standar deviasinya cerita lain.

Cabang B punya standar deviasi Rp 4,7 juta, hampir 4 kali cabang lain. Koefisien variasinya 0,49, artinya omzetnya naik turun jauh dari hari ke hari. Cabang A dan C jauh lebih stabil.

Keputusan yang berubah: manajer tadinya mau kasih bonus sama rata ke tiga cabang karena rata-ratanya mirip. Setelah lihat sebarannya, fokus digeser ke cabang B dulu. Pas ditelusuri, cabang B omzetnya numpuk di akhir pekan dan sepi di hari kerja. Masalahnya bukan total, tapi pola yang nggak merata, dan itu cuma keliatan dari standar deviasi.

Gimana cara deteksi outlier pakai standar deviasi?

Salah satu pemakaian standar deviasi yang paling berguna: nyari nilai yang nggak wajar. Aturan umumnya, nilai yang jaraknya lebih dari 2 standar deviasi dari rata-rata layak dicek.

WITH stat AS (
  SELECT
    AVG(omzet)         AS mean_omzet,
    STDDEV_SAMP(omzet) AS sd_omzet
  FROM penjualan_harian
)
SELECT
  p.tanggal,
  p.omzet
FROM penjualan_harian p, stat s
WHERE ABS(p.omzet - s.mean_omzet) > 2 * s.sd_omzet
ORDER BY p.omzet DESC;

CTE stat ngitung rata-rata dan standar deviasi sekali. Query utama nyari hari yang omzetnya jauh dari normal, ke atas maupun ke bawah. Outlier ini bisa berarti error data, atau kejadian nyata kayak promo besar yang perlu kamu tandai. Teknik ini bagian dari eksplorasi data yang aku bahas di EDA dengan SQL.

Kesalahan umum waktu ngitung standar deviasi di SQL

Salah pilih sample vs population. Buat data bisnis yang sifatnya sampel, pakai STDDEV_SAMP. STDDEV_POP bikin angkanya sedikit lebih kecil, dan salah kalau datamu cuma sebagian.

Baca standar deviasi tanpa rata-rata. Standar deviasi Rp 2 juta nggak berarti apa-apa sendirian. Digabung rata-rata baru ketahuan besar atau kecil. Pakai koefisien variasi buat banding antar kelompok.

Ngarep hasil dari satu baris. STDDEV_SAMP butuh minimal dua nilai. Kelompok yang cuma punya satu baris bakal ngasih NULL, bukan nol.

Lupa outlier bisa error data. Nilai ekstrem yang ketangkep filter standar deviasi belum tentu kejadian nyata. Cek dulu, jangan-jangan salah input.

Pakai varians buat laporan. Varians satuannya kuadrat, susah dibaca. Buat komunikasi ke orang, pakai standar deviasi yang satuannya sama kayak data asli.

FAQ

Fungsi apa buat menghitung standar deviasi di SQL?

Di PostgreSQL kamu pakai STDDEV_SAMP buat standar deviasi sampel dan STDDEV_POP buat standar deviasi populasi. STDDEV sendiri tanpa embel-embel itu alias dari STDDEV_SAMP. Buat varians, pakai VAR_SAMP dan VAR_POP. Semua fungsi ini agregat, jadi kamu pakai kayak SUM atau AVG, dan bisa digabung sama GROUP BY buat ngitung sebaran per kelompok, misalnya per cabang atau per bulan.

Apa bedanya standar deviasi sample dan population?

Versi sample, STDDEV_SAMP, dipakai kalau datamu cuma sebagian dari populasi yang lebih besar, dan dia bagi dengan n dikurangi 1. Versi population, STDDEV_POP, dipakai kalau datamu udah mencakup seluruh populasi, dan dia bagi dengan n. Buat data bisnis yang biasanya cuma sampel dari periode tertentu, versi sample lebih tepat. Selisihnya kecil kalau datamu banyak, tapi jadi penting waktu barisnya sedikit.

Apa bedanya varians dan standar deviasi?

Varians adalah rata-rata kuadrat selisih tiap nilai dari rata-ratanya, sementara standar deviasi adalah akar kuadrat dari varians. Karena varians dikuadratkan, satuannya jadi aneh, misalnya rupiah kuadrat. Standar deviasi balik ke satuan asli, jadi lebih gampang dibaca. Buat laporan sehari-hari, pakai standar deviasi karena angkanya langsung bisa dibandingin sama rata-rata dalam satuan yang sama.

Gimana cara deteksi outlier pakai standar deviasi di SQL?

Hitung dulu rata-rata dan standar deviasi datamu, terus cari nilai yang jaraknya lebih dari dua atau tiga standar deviasi dari rata-rata. Di SQL, taruh rata-rata dan standar deviasi di CTE, lalu filter baris yang selisih absolutnya dari rata-rata lebih besar dari dua kali standar deviasi. Nilai yang lolos filter itu kandidat outlier yang layak dicek, entah karena error data atau kejadian nyata yang nggak biasa.

Kenapa STDDEV saya hasilnya NULL atau nol?

Hasil NULL biasanya muncul kalau cuma ada satu baris data, karena STDDEV_SAMP butuh minimal dua nilai buat ngitung sebaran. Hasil nol muncul kalau semua nilainya sama persis, jadi nggak ada sebaran sama sekali. Kalau kamu ngitung per kelompok pakai GROUP BY, kelompok yang cuma punya satu baris bakal ngasih NULL. Cek jumlah baris per kelompok dan pertimbangin filter kelompok yang datanya terlalu sedikit.

Penutup

Ringkasnya soal standar deviasi dan varians di SQL:

  • Pakai STDDEV_SAMP dan VAR_SAMP buat data sampel, versi POP buat populasi lengkap
  • Baca standar deviasi selalu bareng rata-rata, atau pakai koefisien variasi buat banding kelompok
  • Standar deviasi juga alat deteksi outlier: nilai lebih dari 2 standar deviasi dari rata-rata layak dicek

Coba ambil satu kolom angka di datamu, misalnya omzet harian, terus hitung rata-rata dan standar deviasinya sekaligus. Kalau standar deviasinya gede dibanding rata-rata, kamu baru nemu variasi yang selama ini ketutup satu angka rata-rata. Latihan query statistik kayak gini bisa kamu terusin di NgulikSQL. Referensi fungsinya ada di dokumentasi 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