Friday, February 13, 2026

Menjadi Data Analyst dari Nol (Part 21)


 

Filtering Data SQL: Perbedaan WHERE vs HAVING (Wajib Dipahami Data Analyst)

Kalau kamu lagi belajar SQL untuk Data Analyst, ada dua keyword yang kelihatannya mirip tapi fungsinya beda jauh:

👉 WHERE
👉 HAVING

Banyak pemula ketuker pakainya — dan ini sering jadi jebakan di technical test.

Di artikel ini kita bahas:

✅ Apa itu WHERE
✅ Apa itu HAVING
✅ Perbedaan WHERE vs HAVING
✅ Contoh nyata
✅ Kapan harus pakai yang mana

Santai… kita kupas pelan-pelan 🔥

Apa Itu WHERE?

WHERE digunakan untuk memfilter data sebelum proses agregasi.

Artinya:

👉 Data difilter dulu
👉 Baru dihitung (SUM, COUNT, AVG, dll)

Contoh:

Misalnya kita punya tabel sales:

customerregionamount
AJakarta100
BBandung200
CJakarta300

Kalau kita mau ambil transaksi dari Jakarta saja:

SELECT * FROM sales WHERE region = 'Jakarta';

Hasil:

customerregionamount
AJakarta100
CJakarta300

👉 WHERE bekerja di level baris (row).

Apa Itu HAVING?

HAVING digunakan untuk memfilter hasil agregasi.

Artinya:

👉 Data dihitung dulu
👉 Baru difilter

HAVING biasanya dipakai barengan dengan:

  • GROUP BY

  • SUM()

  • COUNT()

  • AVG()

Contoh:

Kita mau lihat region yang total penjualannya lebih dari 300:

SELECT region, SUM(amount) AS total_sales FROM sales GROUP BY region HAVING SUM(amount) > 300;

Hasil:

regiontotal_sales
Jakarta400

👉 HAVING bekerja setelah GROUP BY.

Perbedaan WHERE vs HAVING (Ringkas & Jelas)

WHEREHAVING
Filter sebelum agregasiFilter setelah agregasi
Bisa tanpa GROUP BYBiasanya pakai GROUP BY
Tidak bisa pakai SUM/COUNTBisa pakai SUM/COUNT
Level barisLevel hasil grup

Kalau mau disingkat:

🧠 WHERE = filter data mentah
🧠 HAVING = filter hasil perhitungan

Contoh Kombinasi WHERE + HAVING (Real Case)

Misalnya:

👉 Kita mau ambil transaksi tahun 2024
👉 Lalu cari customer dengan total belanja > 500

SELECT customer, SUM(amount) AS total_spent FROM sales WHERE year = 2024 GROUP BY customer HAVING SUM(amount) > 500;

Urutannya:

  1. WHERE → filter tahun 2024

  2. GROUP BY → grup per customer

  3. SUM → hitung total

  4. HAVING → filter hasil total

Ini pola yang sering banget muncul di dunia kerja Data Analyst.

Kesalahan Umum Pemula

❌ Pakai WHERE untuk agregasi:

WHERE SUM(amount) > 500

Ini pasti error.

Karena:

👉 WHERE belum tahu hasil SUM
👉 SUM baru ada setelah GROUP BY
👉 Maka harus pakai HAVING

Kesimpulan

Kalau kamu masih bingung, ingat satu kalimat ini:

🔥 WHERE untuk filter data awal
🔥 HAVING untuk filter hasil perhitungan

Kalau sudah paham ini, 50% soal SQL filtering langsung aman 😎

Kalau mau, next article kita lanjut:

✅ GROUP BY lebih dalam
✅ JOIN untuk Data Analyst
✅ SQL case study versi real perusahaan
✅ SQL interview question + solusi

Baca selengkapnya

Tuesday, February 10, 2026

Menjadi Data Analyst dari Nol (Part 20)

 


Handling NULL di SQL (Wajib Dikuasai Data Analyst Pemula)

Dalam pekerjaan sebagai Data Analyst, kita hampir pasti akan bertemu dengan data kosong atau NULL value.

NULL bukan sekadar “kosong”.

NULL artinya:

❌ nilai tidak tersedia
❌ data belum diinput
❌ informasi hilang

Kalau tidak ditangani dengan benar, NULL bisa bikin:

  • hasil agregasi salah

  • insight melenceng

  • dashboard error

  • report jadi tidak akurat

Karena itu, handling NULL adalah skill fundamental Data Analyst.

🧠 Apa Itu NULL di SQL?

NULL berarti tidak ada nilai sama sekali.

Contoh:

customerrevenue
A1000
BNULL
C500

Customer B bukan revenue = 0.
Tapi revenue = UNKNOWN.

Ini beda besar.

❌ Kesalahan Umum Pemula

Banyak pemula menulis:

SELECT * FROM sales WHERE revenue = NULL;

Ini SALAH.

SQL tidak membaca NULL sebagai nilai biasa.

✅ Cara Benar Mengecek NULL

Gunakan:

IS NULL

atau

IS NOT NULL

Contoh:

SELECT * FROM sales WHERE revenue IS NULL;

🔧 Mengganti NULL Dengan Nilai Default (COALESCE)

Sering kali kita ingin mengganti NULL jadi 0 atau teks tertentu.

Gunakan:

COALESCE(column, value)

Contoh:

SELECT customer, COALESCE(revenue,0) AS revenue_clean FROM sales;

Jika revenue NULL → otomatis jadi 0.

📊 Handling NULL Saat Aggregation

Tanpa handling NULL:

SELECT SUM(revenue) FROM sales;

Bisa menghasilkan NULL.

Lebih aman:

SELECT SUM(COALESCE(revenue,0)) FROM sales;

Ini best practice.

🧹 Filtering Data Kosong

Kadang kita ingin buang record yang NULL:

SELECT * FROM sales WHERE customer IS NOT NULL;

💡 Studi Kasus Real Data Analyst

Misal lo mau hitung total sales, tapi beberapa baris revenue NULL.

Solusi:

SELECT SUM(COALESCE(revenue,0)) AS total_sales FROM sales;

Ini memastikan semua NULL dianggap 0.

✅ Ringkasan Handling NULL

KebutuhanSQL
Cek NULLIS NULL
Cek tidak NULLIS NOT NULL
Ganti NULLCOALESCE
Aggregation amanSUM(COALESCE())

🎯 Kenapa Ini Penting Untuk Karier Data Analyst?

Dalam dunia kerja:

  • raw data hampir selalu kotor

  • NULL muncul dari berbagai source

  • BI tools sensitif terhadap NULL

Kalau lo tidak menguasai ini:

❌ report salah
❌ dashboard error
❌ insight tidak dipercaya

Makanya handling NULL termasuk core skill Data Analyst profesional.

next part series kita bisa lanjut:

👉 Filtering Data (WHERE vs HAVING)
👉 CASE WHEN
👉 Data Cleaning SQL
👉 Window Function dasar

Baca selengkapnya

Monday, February 09, 2026

Menjadi Data Analyst dari Nol (Part 19)


 

Exploratory Data Analysis (EDA) Menggunakan SQL — Panduan Praktis untuk Data Analyst Pemula

Exploratory Data Analysis (EDA) adalah salah satu tahap paling penting dalam workflow seorang Data Analyst.

Di fase ini, kita tidak langsung membuat model atau dashboard — tapi fokus untuk:

✅ Memahami struktur data
✅ Menemukan pola awal
✅ Mendeteksi data anomali
✅ Menggali insight bisnis

Dan kabar baiknya:

👉 Semua itu bisa dilakukan hanya dengan SQL.

Di artikel ini, kita akan membahas bagaimana melakukan EDA menggunakan SQL secara praktis dengan contoh nyata seperti yang sering muncul di pekerjaan Data Analyst.

📌 Apa Itu Exploratory Data Analysis (EDA)?

EDA adalah proses eksplorasi data mentah untuk menjawab pertanyaan seperti:

  • Berapa jumlah data?

  • Ada nilai kosong?

  • Produk mana paling laku?

  • Bagaimana tren penjualan?

  • Apakah ada data duplikat?

  • Outlier atau transaksi aneh?

Tujuan EDA bukan bikin visualisasi cantik dulu — tapi memahami data sedalam mungkin.

Biasanya EDA dilakukan sebelum:

  • Data cleaning

  • Feature engineering

  • Dashboarding

  • Machine learning

🗂 Contoh Dataset (Sales Manufaktur)

Misalkan kita punya tabel sales_data dengan kolom:

  • order_id

  • order_date

  • product

  • category

  • quantity

  • revenue

  • customer_id

1️⃣ Cek Struktur Awal Dataset

Langkah pertama: lihat isi data.

SELECT * FROM sales_data LIMIT 10;

Tujuannya:

  • Cek format tanggal

  • Validasi kolom numerik

  • Pastikan data masuk akal

2️⃣ Hitung Jumlah Total Data

SELECT COUNT(*) AS total_rows FROM sales_data;

Ini penting untuk tahu skala data yang akan dianalisa.

3️⃣ Cek Missing Value

SELECT COUNT(*) - COUNT(product) AS missing_product, COUNT(*) - COUNT(revenue) AS missing_revenue FROM sales_data;

Kalau banyak NULL:

👉 Bisa jadi data belum lengkap
👉 Perlu cleaning

4️⃣ Statistik Dasar

SELECT MIN(revenue) AS min_rev, MAX(revenue) AS max_rev, AVG(revenue) AS avg_rev FROM sales_data;

Dari sini kita mulai paham range nilai transaksi.

5️⃣ Top Produk Berdasarkan Penjualan

SELECT product, SUM(revenue) AS total_sales FROM sales_data GROUP BY product ORDER BY total_sales DESC LIMIT 10;

Ini langsung kasih insight bisnis:

🔥 Produk terlaris
🔥 Fokus inventory
🔥 Kandidat promo

6️⃣ Analisis Kategori

SELECT category, SUM(revenue) AS revenue FROM sales_data GROUP BY category ORDER BY revenue DESC;

Biasanya dipakai untuk:

  • Menentukan prioritas kategori

  • Segmentasi market

7️⃣ Tren Penjualan Bulanan

SELECT strftime('%Y-%m', order_date) AS month, SUM(revenue) AS total_sales FROM sales_data GROUP BY month ORDER BY month;

Hasilnya bisa langsung dipakai buat chart line.

8️⃣ Deteksi Outlier Transaksi

SELECT * FROM sales_data WHERE revenue > 10000000;

Tujuannya:

  • Cek transaksi abnormal

  • Hindari error di dashboard

9️⃣ Customer Paling Aktif

SELECT customer_id, COUNT(order_id) AS total_orders FROM sales_data GROUP BY customer_id ORDER BY total_orders DESC LIMIT 10;

Berguna untuk:

  • Loyalty program

  • Retargeting

✅ Kenapa EDA SQL Itu Penting?

Karena di dunia kerja:

🚫 Data jarang bersih
🚫 Jarang langsung siap pakai

SQL memungkinkan kita:

✔ Analisa langsung di database
✔ Cepat eksplor jutaan row
✔ Insight tanpa export Excel

EDA = pondasi semua analisis.

Kalau salah EDA → insight ikut salah.

🧠 Workflow EDA SQL ala Data Analyst

Biasanya urutannya:

  1. Preview data

  2. Hitung jumlah row

  3. Cek missing value

  4. Statistik dasar

  5. Grouping utama

  6. Trend waktu

  7. Outlier detection

  8. Simpan insight


🚀 Penutup

Exploratory Data Analysis bukan cuma langkah awal — tapi fondasi utama seorang Data Analyst.

Dengan SQL, lo bisa:

✅ Mengenal data
✅ Menemukan masalah
✅ Menghasilkan insight
✅ Siap lanjut ke dashboard / modeling

Tanpa EDA → analisis cuma tebak-tebakan.

Next Part 🔥

Di artikel berikutnya kita akan bahas:

👉 Handling NULL
👉 Remove duplicate
👉 Standarisasi data

Baca selengkapnya

Friday, February 06, 2026

Menjadi Data Analyst dari Nol (Part 18)

 


Data Cleaning & Data Transformation Menggunakan SQL (Studi Kasus Nyata Data Analyst)

(lanjutan dari Part 2 – Studi Kasus SQL Data Analyst)

Pendahuluan

Di dunia nyata, tugas Data Analyst jarang langsung “query → insight”.

Yang paling sering terjadi justru:

👉 data berantakan
👉 duplikat
👉 format tidak konsisten
👉 nilai kosong
👉 kolom tidak rapi

Inilah fase yang sering memakan 60–70% waktu kerja seorang Data Analyst:
Data Cleaning & Data Transformation.

Di Part 3 ini, kita akan lanjutkan studi kasus manufaktur sebelumnya, dan fokus ke:

✅ membersihkan data menggunakan SQL
✅ menyiapkan dataset agar siap dianalisis
✅ membangun mindset “real-world Data Analyst”

Dataset Awal (Raw Data)

Misalnya kita punya tabel:

manufacturing_sales_raw

Contoh masalah umum:

• Order ID duplikat
• Customer name tidak konsisten (uppercase/lowercase)
• Qty kosong
• Revenue berbentuk text
• Tanggal format berbeda
• Produk sama tapi penamaan beda

Ini kondisi normal di lapangan.

1️⃣ Menghapus Data Duplikat

Langkah pertama: identifikasi duplikat.

SELECT order_id, COUNT(*) FROM manufacturing_sales_raw GROUP BY order_id HAVING COUNT(*) > 1;

Jika sudah ketemu, kita buat CTE:

WITH cte AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY order_id ORDER BY order_date) rn FROM manufacturing_sales_raw ) DELETE FROM cte WHERE rn > 1;

👉 Result: hanya 1 baris per order_id.

2️⃣ Standarisasi Nama Customer & Produk

SQL sangat powerful untuk normalisasi text:

UPDATE manufacturing_sales_raw SET customer_name = UPPER(customer_name);

Untuk produk:

UPDATE manufacturing_sales_raw SET product = TRIM(product);

Tujuannya supaya:

• “Widget A”
• “widget a”
• “Widget A ”

jadi satu versi saja.

3️⃣ Menangani Nilai Kosong (NULL)

Qty kosong? Revenue kosong?

UPDATE manufacturing_sales_raw SET qty = 0 WHERE qty IS NULL;

Revenue:

UPDATE manufacturing_sales_raw SET revenue = qty * price WHERE revenue IS NULL;

Mindset penting:

👉 jangan biarkan NULL tanpa alasan bisnis.

4️⃣ Convert Kolom Text Menjadi Numeric

Kasus umum:

Revenue tersimpan sebagai TEXT.

CAST(revenue AS INTEGER)

atau

CAST(revenue AS FLOAT)

Ini penting supaya bisa dipakai untuk agregasi.

5️⃣ Membuat Kolom Baru (Derived Column)

Contoh bikin kolom total_sales:

ALTER TABLE manufacturing_sales_raw ADD COLUMN total_sales FLOAT; UPDATE manufacturing_sales_raw SET total_sales = qty * price;

Sekarang dataset sudah siap untuk analisis.

6️⃣ Final Clean Dataset

Kita simpan hasil bersih:

CREATE TABLE manufacturing_sales_clean AS SELECT order_id, order_date, customer_name, product, qty, price, qty * price AS total_sales FROM manufacturing_sales_raw;

Inilah table yang biasanya dipakai untuk:

👉 dashboard
👉 reporting
👉 business insight

Mindset Data Analyst: Bukan Cuma Query

Banyak pemula berpikir Data Analyst itu:

“SELECT, JOIN, selesai.”

Padahal real job:

✅ memahami struktur data
✅ membersihkan data
✅ standarisasi
✅ validasi angka
✅ baru analisis

SQL hanyalah alat.

Yang paling penting: cara berpikir.

Kesimpulan

Di Part 3 ini kita belajar bahwa:

✔ Data mentah hampir selalu kotor
✔ Cleaning adalah bagian terbesar dari pekerjaan DA
✔ SQL bisa digunakan bukan hanya untuk query, tapi juga transformasi data
✔ Dataset yang rapi = insight yang akurat


Next Part 🚀

Di Part 4 nanti kita akan masuk ke:

👉 Exploratory Data Analysis (EDA) menggunakan SQL
👉 mencari tren penjualan
👉 produk terlaris
👉 customer paling profitable
👉 insight bisnis nyata

Baca selengkapnya

Thursday, February 05, 2026

Menjadi Data Analyst dari Nol (Part 17)

 


Studi Kasus SQL Data Analyst

Halo Data Enthusiast! 👋
Di Part 1, kita sudah bahas dasar SQL untuk Data Analyst dan bagaimana mempersiapkan data untuk analisis. Nah, di Part 2, kita akan langsung praktek studi kasus SQL nyata menggunakan data manufaktur, supaya lo bisa belajar cara mengolah data mentah menjadi insight bisnis.

Studi Kasus: Data Produksi Manufaktur

Misal lo punya tabel produksi seperti ini:

Tabel Produksi

id_produknama_produkjumlah_produksitanggal_produksishift
1Widget A1002026-02-011
2Widget B1502026-02-012
1Widget A1202026-02-021
3Widget C2002026-02-023

Tujuan lo:

  1. Tahu total produksi tiap produk

  2. Tahu produk mana yang paling banyak diproduksi

  3. Tahu rata-rata produksi per shift

1️⃣ Total Produksi Tiap Produk

Query SQL:

SELECT nama_produk, SUM(jumlah_produksi) AS total_produksi FROM Produksi GROUP BY nama_produk ORDER BY total_produksi DESC;

Hasil:

nama_produktotal_produksi
Widget C200
Widget A220
Widget B150

💡 Insight: Dari sini, lo langsung bisa lihat produk mana yang paling diminati atau paling banyak diproduksi.

2️⃣ Produk Terpopuler per Shift

Kadang kita mau tau shift mana paling produktif per produk. SQL bertingkat bisa bantu:

SELECT shift, nama_produk, SUM(jumlah_produksi) AS total_shift FROM Produksi GROUP BY shift, nama_produk ORDER BY shift, total_shift DESC;

💡 Insight: Lo bisa analisa shift yang paling efisien atau shift yang butuh improvement.

3️⃣ Rata-rata Produksi Per Shift

Biar lo bisa evaluasi performa setiap shift:

SELECT shift, AVG(jumlah_produksi) AS rata_rata_produksi FROM Produksi GROUP BY shift ORDER BY shift;

💡 Insight: Dengan ini, lo bisa nemuin shift yang over-performing atau under-performing, lalu ambil keputusan strategis.

Kesimpulan & Tips SQL

  • GROUP BY + SUM/AVG = kunci analisis produksi

  • ORDER BY = bantu lo cepat lihat produk/shift terbaik

  • SQL bertingkat / subquery = efektif buat analisis lebih kompleks

  • Selalu validasi data mentah sebelum analisis, supaya insight lo valid

Baca selengkapnya