Blog/Tutorial SQL/SQL untuk Data Analysis: 8 Skill Wajib Sebelum Apply Kerja
Tutorial SQL

SQL untuk Data Analysis: 8 Skill Wajib Sebelum Apply Kerja

BimaBima
·22 Juli 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

SQL untuk data analysis nggak butuh semua fitur SQL. Cukup 8 skill inti: SELECT plus WHERE, ORDER BY plus LIMIT, fungsi agregat, GROUP BY plus HAVING, JOIN, CASE WHEN, fungsi tanggal, dan window function. Kalau kedelapan ini bisa kamu tulis tanpa nyontek, kamu udah siap ngerjain sebagian besar kerjaan analyst harian.

#SQL#Data Analyst

SQL untuk data analysis itu kemampuan minta data spesifik dari database pakai perintah teks. Kamu ketik pertanyaan dalam format tertentu, database balikin jawabannya berupa tabel.

Masalahnya, banyak orang belajar SQL kayak mau jadi database administrator. Hafalin semua fungsi, semua tipe JOIN, semua trik indexing. Padahal kerjaan analyst harian cuma nyentuh sebagian kecil dari itu.

Di sini aku pecah 8 skill yang beneran dipake. Tiap skill ada query contohnya, plus self-test biar kamu tau udah bisa atau belum.

Skill SQL apa aja yang beneran dipake data analyst?

Ada 8 kemampuan inti: SELECT plus WHERE buat ambil dan saring data, ORDER BY plus LIMIT buat urutkan, fungsi agregat buat hitung total, GROUP BY plus HAVING buat ringkas per kategori, JOIN buat gabung tabel, CASE WHEN buat bikin kategori, fungsi tanggal buat analisis per waktu, dan window function buat ranking. Kuasai delapan ini, sisanya nyusul sambil jalan.

Semua contoh di bawah pakai satu dataset yang sama: toko keripik online fiktif namanya Keripik Juara. Ada tabel pesanan (isi transaksi) dan tabel pelanggan (isi nama dan kota). DDL lengkapnya ada di bawah artikel, jadi kamu bisa langsung praktek kok.

1. SELECT + WHERE — ambil kolom, saring baris

Ini query pertama semua orang, kan. SELECT milih kolom mana yang mau kamu lihat. WHERE nyaring baris mana yang lolos.

SELECT produk, total
FROM pesanan
WHERE total > 50000;

Query ini nanya: dari semua pesanan, tunjukin produk dan total yang nilainya di atas 50 ribu. Hasilnya 4 baris, mulai dari Keripik Balado 90 ribu sampai Keripik Singkong 150 ribu.

Self-test: bisa nulis query yang narik nama produk buat pesanan di atas nominal tertentu, tanpa nyontek? Kalau ya, skill ini beres.

2. ORDER BY + LIMIT — urutkan, ambil yang teratas

Data mentah itu acak. ORDER BY ngurutin, LIMIT motong ambil sebagian atas doang. Kombinasi ini yang kamu pake tiap kali bos nanya "produk paling laris apa?".

SELECT produk, total
FROM pesanan
ORDER BY total DESC
LIMIT 3;

DESC artinya dari besar ke kecil. Query ini balikin 3 pesanan dengan total tertinggi: Keripik Singkong 150 ribu di puncak, disusul dua pesanan 90 ribu.

Self-test: bisa ambil 5 pesanan termahal urut dari yang paling gede? Kalau bisa, lanjut.

3. Fungsi agregat — hitung total dan rata-rata

Fungsi agregat ngeringkas banyak baris jadi satu angka. Ada lima yang wajib: COUNT (hitung baris), SUM (jumlah), AVG (rata-rata), MIN dan MAX (terkecil dan terbesar).

SELECT
  COUNT(*) AS jumlah_pesanan,
  SUM(total) AS total_omzet,
  ROUND(AVG(total)) AS rata_rata
FROM pesanan;

Hasilnya satu baris: 10 pesanan, omzet 603 ribu, rata-rata 60.300 per pesanan. ROUND aku pake biar angka rata-ratanya nggak berkoma panjang.

Self-test: tau bedanya COUNT(*) sama SUM(kolom)? Yang satu ngitung berapa baris, satunya jumlahin isi kolom. Sering ketuker sih, hati-hati.

4. GROUP BY + HAVING — ringkas per kategori

Fungsi agregat tadi ngeringkas seluruh tabel jadi satu angka. GROUP BY bikin ringkasan itu per kelompok. Omzet per produk, jumlah pesanan per kota, gitu-gitu.

SELECT produk, SUM(total) AS omzet
FROM pesanan
GROUP BY produk
HAVING SUM(total) > 100000
ORDER BY omzet DESC;

HAVING nyaring hasil grup, beda sama WHERE yang nyaring baris mentah. Query ini nunjukin produk yang omzetnya lewat 100 ribu: Singkong 240 ribu, Balado 198 ribu, Pisang 165 ribu.

Ini salah satu skill yang paling sering kepake, jadi jangan cuma lewat. Kalau masih bingung kapan pake WHERE dan kapan HAVING, aku bahas tuntas di panduan GROUP BY dan HAVING.

Self-test: bisa bikin tabel omzet per kota, cuma buat kota yang omzetnya di atas angka tertentu? Itu GROUP BY plus HAVING barengan.

5. JOIN — gabung dua tabel

Data nyata jarang numpuk di satu tabel. Info pesanan di satu tempat, info pelanggan di tempat lain. JOIN nyambungin keduanya lewat kolom yang sama.

SELECT c.nama, c.kota, p.produk, p.total
FROM pesanan p
JOIN pelanggan c ON p.pelanggan_id = c.pelanggan_id
ORDER BY p.total DESC
LIMIT 5;

Kunci sambungannya di ON p.pelanggan_id = c.pelanggan_id. Sekarang tiap pesanan udah nempel nama dan kota pembelinya. Hasilnya: pesanan Singkong 150 ribu punya Andi dari Bandung, dan seterusnya.

Buat mulai, kamu cukup kuasai INNER JOIN (yang aku tulis JOIN aja di atas) dan LEFT JOIN. Sisanya jarang kepake di kerjaan analyst.

Self-test: ngerti kenapa JOIN butuh kolom penghubung? Kalau iya, kamu udah paham konsep intinya.

6. CASE WHEN — bikin kategori sendiri

CASE WHEN itu logika if-else di dalam query. Kamu bikin kolom baru berdasarkan aturan yang kamu tentuin. Misal ngelompokin pesanan jadi kecil, sedang, besar.

SELECT produk, total,
  CASE
    WHEN total >= 90000 THEN 'Besar'
    WHEN total >= 40000 THEN 'Sedang'
    ELSE 'Kecil'
  END AS kategori
FROM pesanan
ORDER BY total DESC;

SQL ngecek kondisi dari atas ke bawah, berhenti di yang pertama cocok. Pesanan 150 ribu masuk Besar, 45 ribu masuk Sedang, 15 ribu masuk Kecil. Skill ini kepake buat segmentasi pelanggan, flagging data aneh, macem-macem.

Self-test: bisa bikin kolom yang nandain pesanan "gratis ongkir" kalau total di atas 100 ribu? Itu CASE WHEN versi sederhana.

7. Fungsi tanggal — analisis per waktu

Hampir semua pertanyaan bisnis ada unsur waktunya. Omzet bulan ini vs bulan lalu, tren mingguan, dan seterusnya. Kamu butuh cara ngambil bagian dari tanggal buat dikelompokin.

SELECT
  strftime(tanggal, '%Y-%m') AS bulan,
  SUM(total) AS omzet
FROM pesanan
GROUP BY bulan
ORDER BY bulan;

Query ini ngeringkas omzet per bulan: Januari 165 ribu, Februari 177 ribu, Maret naik ke 261 ribu. Kelihatan trennya naik terus.

Catatan dialek: strftime jalan di SQLite dan DuckDB. Di PostgreSQL pake TO_CHAR(tanggal, 'YYYY-MM') atau DATE_TRUNC('month', tanggal). Di MySQL pake DATE_FORMAT(tanggal, '%Y-%m'). Tujuannya sama, tinggal cocokin sama database di kantormu.

Self-test: bisa ngitung jumlah pesanan per bulan? Itu fungsi tanggal plus GROUP BY gabung.

8. Window function — ranking dan running total

Ini skill paling "senior" dari delapan, tapi masih kepake rutin kok. Window function ngitung sesuatu di dalam kelompok tanpa ngeringkas barisnya. Contoh paling sering: ngasih peringkat.

SELECT c.kota, c.nama, p.total,
  RANK() OVER (PARTITION BY c.kota ORDER BY p.total DESC) AS peringkat
FROM pesanan p
JOIN pelanggan c ON p.pelanggan_id = c.pelanggan_id;

PARTITION BY c.kota artinya ranking dihitung terpisah per kota. Jadi tiap kota punya juara pesanan terbesarnya sendiri. Andi nomor 1 di Bandung, Rizki nomor 1 di Jakarta.

Fungsi lain yang sekeluarga: ROW_NUMBER, SUM() OVER (...) buat running total, dan LAG buat bandingin baris sekarang sama sebelumnya. Detail ranking-nya aku pisah di artikel ROW_NUMBER vs RANK. Buat rujukan resmi, dokumentasi window functions PostgreSQL penjelasannya paling rapi.

Self-test: ngerti kenapa hasil window function jumlah barisnya sama kayak tabel asli, beda sama GROUP BY yang ngeringkas? Kalau iya, kamu udah di atas rata-rata pemula.

Skill SQL apa yang boleh kamu skip dulu?

Biar nggak kewalahan di awal, ini yang belum perlu kamu pelajarin dulu: bikin dan hapus tabel (CREATE, DROP), INSERT dan UPDATE data, stored procedure, trigger, indexing, sama tuning performa. Semua itu porsi engineer atau DBA yang ngurus databasenya, bukan kerjaan analyst harian.

Subquery dan CTE (WITH) juga bisa nyusul. Berguna banget, tapi kamu bisa ngerjain banyak hal cuma modal 8 skill di atas dulu. Tambahin pelan-pelan pas ketemu masalah yang butuh.

Kalau kamu mau urutan belajar yang lebih detail dari nol sampai siap kerja, aku susun di roadmap belajar SQL data analyst.

Contoh kasus: satu pertanyaan bisnis Keripik Juara

Skill-skill tadi jarang dipake sendiri-sendiri. Di kerjaan nyata, satu query gabungin beberapa. Coba pertanyaan ini: "produk apa yang paling laku di tiap kota, plus total omzetnya?"

SELECT c.kota, p.produk, SUM(p.total) AS omzet
FROM pesanan p
JOIN pelanggan c ON p.pelanggan_id = c.pelanggan_id
GROUP BY c.kota, p.produk
HAVING SUM(p.total) > 30000
ORDER BY c.kota, omzet DESC;

Satu query ini nyentuh 4 skill sekaligus: JOIN, GROUP BY, fungsi agregat, dan HAVING. Begitu 8 skill inti nempel, gabunginnya jadi refleks. Cara latihannya lewat eksplorasi data kayak gini, yang aku bahas di EDA pakai SQL.

FAQ

Apakah harus jago semua fitur SQL buat jadi data analyst?

Nggak. Kerjaan analyst harian kebanyakan cuma nyentuh SELECT, filtering, agregasi, JOIN, dan window function. Bikin tabel, tuning database, atau stored procedure itu ranah engineer. Fokusin 8 skill inti dulu, itu udah cukup buat lolos sebagian besar tes teknis dan ngerjain tugas nyata.

SQL dialek mana yang sebaiknya dipelajari duluan?

PostgreSQL pilihan paling aman. Sintaksnya standar, dipake banyak perusahaan, dan skillnya gampang dipindah ke MySQL atau BigQuery. Bedanya antar dialek kebanyakan cuma di fungsi tanggal dan string. Konsep intinya kayak GROUP BY dan JOIN sama persis di semua database.

Berapa lama belajar SQL sampai siap apply kerja?

Dari yang aku lihat, 4 sampai 8 minggu cukup kalau latihannya rutin nulis query, bukan cuma nonton tutorial. Kuncinya di praktek langsung ngetik, bukan di jumlah materi. Delapan skill di artikel ini bisa kamu tuntasin dalam sebulan kalau tiap hari nyempetin 30 menit latihan.

Apa bedanya WHERE sama HAVING?

WHERE nyaring baris sebelum data dikelompokin. HAVING nyaring hasil setelah GROUP BY jalan. Contoh: pake WHERE buat ambil pesanan di bulan Maret, pake HAVING buat ambil produk yang total omzetnya lewat 100 ribu. Salah satu yang paling sering ketuker nih pas wawancara.

Perlu belajar window function buat pemula?

Perlu, tapi taruh di urutan terakhir. Window function kayak RANK dan running total sering muncul di tes teknis level menengah. Kalau 7 skill lain udah lancar, ini yang bikin kamu beda dari kandidat lain. Nggak susah kok, cuma butuh sedikit lebih banyak latihan.

Langkah selanjutnya belajar SQL untuk data analysis

Ringkasnya: SQL untuk data analysis itu 8 skill inti, bukan seratus fitur. Delapan yang tadi kita bahas satu-satu di atas, dari SELECT sampai window function. Yang lain bisa nyusul kok pas kamu butuh.

Bedanya orang yang bisa SQL sama yang cuma tau teorinya ada di jam ngetik query. Latih kedelapan skill ini langsung sambil ngetik di NgulikSQL, gratis dan nggak perlu install apa-apa.

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

Tutorial SQL
30 Juli 2026•8 menit baca

SELF JOIN di SQL: Cara Kerja + 5 Contoh Praktis

Self join itu nggabungin satu tabel ke dirinya sendiri. Ini cara kerjanya plus 5 contoh yang udah dites: atasan-bawahan, omzet antar bulan, sampai transaksi duplikat.

BimaBima
Tutorial SQL
28 Juli 2026•7 menit baca

UNION vs UNION ALL di SQL: Perbedaan dan Kapan Pakai

Beda UNION dan UNION ALL cuma satu kata, tapi salah pilih bikin angka revenue kamu berubah. Ini penjelasan bedanya, kapan pakai, plus kenapa UNION ALL lebih cepat.

BimaBima
Sintaks SQL Dasar: Struktur Query yang Wajib Dipahami
Tutorial SQL
18 Juli 2026•8 menit baca

Sintaks SQL Dasar: Struktur Query yang Wajib Dipahami

Urutan nulis query SQL beda sama urutan database ngejalaninnya. Paham selisih ini bikin error sintaks pemula tiba-tiba masuk akal.

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.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore