Pemrograman

5 Query SQL yang Paling Sering Dipakai Analis Data

Kebanyakan pekerjaan analis data cukup dengan lima pola query: SELECT-WHERE, GROUP BY, HAVING, ORDER BY-LIMIT, dan CASE WHEN. Ini contohnya dengan data penjualan.

BukuPraktis · 09 Oktober 2026 · 5 menit baca

Ingin mulai belajar SQL tapi bingung harus menghafal apa? Kabar baiknya, sebagian besar pekerjaan analis data sehari-hari hanya memakai beberapa pola query. Daripada menghafal puluhan perintah, kuasai lima pola yang sering muncul ini, lalu latih dengan data kecil yang hasilnya bisa kamu hitung di kepala. Kita pakai satu tabel contoh bernama penjualan:

id tanggal kota produk jumlah harga
1 2026-09-01 Bandung Kopi 3 25000
2 2026-09-01 Jakarta Teh 2 18000
3 2026-09-02 Jakarta Kopi 5 25000
4 2026-09-03 Surabaya Roti 4 15000
5 2026-09-03 Bandung Teh 1 18000
6 2026-09-04 Jakarta Roti 6 15000
7 2026-09-05 Surabaya Kopi 3 25000

Omzet tiap transaksi adalah jumlah * harga. Hitung dulu supaya mudah memeriksa hasil query: transaksi 1 = 75.000, 2 = 36.000, 3 = 125.000, 4 = 60.000, 5 = 18.000, 6 = 90.000, 7 = 75.000. Total seluruhnya 479.000.

Menyaring data dengan WHERE

SELECT tanggal, produk, jumlah * harga AS omzet
FROM penjualan
WHERE kota = 'Jakarta'
ORDER BY omzet DESC;

Hasilnya tiga transaksi Jakarta, dari omzet terbesar:

tanggal produk omzet
2026-09-02 Kopi 125000
2026-09-04 Roti 90000
2026-09-01 Teh 36000

AS omzet memberi nama baru pada kolom hasil hitungan, dan nama itu bisa dipakai di ORDER BY.

Meringkas dengan GROUP BY

Pertanyaan paling umum dari atasan: "Kota mana yang omzetnya paling besar?"

SELECT kota, COUNT(*) AS transaksi, SUM(jumlah * harga) AS omzet
FROM penjualan
GROUP BY kota
ORDER BY omzet DESC;
kota transaksi omzet
Jakarta 3 251000
Surabaya 2 135000
Bandung 2 93000

Cek cepat: 251.000 + 135.000 + 93.000 = 479.000, sama dengan total seluruh transaksi. Kebiasaan menjumlah ulang seperti ini menyelamatkanmu dari query yang salah tapi tampak meyakinkan.

Menyaring hasil ringkasan dengan HAVING

WHERE menyaring baris sebelum dikelompokkan, sedangkan HAVING menyaring setelah dikelompokkan:

SELECT kota, SUM(jumlah * harga) AS omzet
FROM penjualan
GROUP BY kota
HAVING SUM(jumlah * harga) > 100000;

Hanya Jakarta (251.000) dan Surabaya (135.000) yang lolos. Bandung (93.000) tersaring karena di bawah 100.000.

Ingin lebih dalam? Artikel ini baru membahas sebagian kecil. Di ebook SQL untuk Analis Data, kamu akan mempelajari lebih jauh:

  • Mengambil dan menyaring data dengan SELECT dan WHERE
  • Menggabungkan beberapa tabel dengan JOIN tanpa bingung
  • Meringkas data dengan agregasi dan GROUP BY

Semua langkahnya disusun berurutan dan bisa langsung dipraktikkan. Lihat isi bukunya.

Mencari yang teratas dengan ORDER BY dan LIMIT

SELECT produk, SUM(jumlah) AS terjual
FROM penjualan
GROUP BY produk
ORDER BY terjual DESC
LIMIT 1;

Produk terlaris adalah Kopi dengan 11 unit (3 + 5 + 3). Sebagai pembanding, Roti terjual 10 unit dan Teh 3 unit. Ganti LIMIT 1 menjadi LIMIT 5 untuk mendapatkan daftar 5 teratas.

Membuat kolom bersyarat dengan CASE WHEN

CASE WHEN berguna untuk menghitung beberapa kategori sekaligus dalam satu query, mirip pivot di Excel:

SELECT kota,
       COUNT(*) AS transaksi,
       SUM(CASE WHEN produk = 'Kopi' THEN jumlah * harga ELSE 0 END) AS omzet_kopi
FROM penjualan
GROUP BY kota
ORDER BY kota;
kota transaksi omzet_kopi
Bandung 2 75000
Jakarta 3 125000
Surabaya 2 75000

Logikanya: untuk setiap baris, jika produknya Kopi maka nilai omzet dipakai, selain itu dihitung 0. Setelah itu SUM menjumlahkan per kota.

Sekilas tentang JOIN

Data di dunia nyata biasanya tersebar di beberapa tabel. Misalkan ada tabel kedua bernama kategori:

produk kategori
Kopi Minuman
Teh Minuman
Roti Makanan

Untuk mengetahui omzet per kategori, gabungkan kedua tabel dengan JOIN pada kolom yang sama:

SELECT k.kategori, SUM(p.jumlah * p.harga) AS omzet
FROM penjualan p
JOIN kategori k ON k.produk = p.produk
GROUP BY k.kategori;

Hasilnya: Minuman 329.000 (Kopi 275.000 ditambah Teh 54.000) dan Makanan 150.000. Jumlahnya 479.000, sama dengan total omzet seluruh transaksi, itu tanda penggabungannya benar. Huruf p dan k hanyalah nama singkat (alias) agar query tidak terlalu panjang.

Urutan menulis dan urutan berjalannya query

Kamu menulis query dengan urutan SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Namun database menjalankannya dengan urutan logis yang berbeda:

Urutan jalan Tahap Fungsi
1 FROM / JOIN Menentukan tabel sumber
2 WHERE Menyaring baris mentah
3 GROUP BY Mengelompokkan baris
4 HAVING Menyaring kelompok
5 SELECT Memilih dan menghitung kolom
6 ORDER BY Mengurutkan hasil
7 LIMIT Memotong jumlah baris

Dari sini jelas kenapa WHERE tidak bisa memakai SUM(...): saat WHERE berjalan, pengelompokan belum terjadi.

Kesalahan yang sering dilakukan pemula

  • Memakai SELECT * untuk semuanya. Sebutkan kolom yang dibutuhkan. Hasilnya lebih mudah dibaca dan lebih ringan untuk tabel besar.
  • Lupa memasukkan kolom ke GROUP BY. Setiap kolom di SELECT yang bukan fungsi agregat (SUM, COUNT, AVG) harus ada di GROUP BY.
  • Membandingkan NULL dengan =. Nilai kosong tidak bisa dicek dengan = NULL. Pakai IS NULL atau IS NOT NULL.
  • Menukar WHERE dan HAVING. WHERE menyaring baris mentah, HAVING menyaring hasil ringkasan.
  • Menyamakan COUNT(*) dan COUNT(kolom). COUNT(*) menghitung semua baris, sedangkan COUNT(kolom) melewati baris yang kolomnya kosong.
  • Percaya hasil tanpa memeriksa. Jumlahkan ulang hasil per kelompok dan bandingkan dengan total.

Latihan dengan tabel yang sama

Coba tulis sendiri query-nya sebelum melihat jawaban:

  1. Berapa total omzet, dikelompokkan per produk?
  2. Berapa rata-rata omzet per transaksi?
  3. Berapa total omzet pada tanggal 2026-09-03?

Jawabannya: (1) Kopi 275.000, Roti 150.000, Teh 54.000, memakai GROUP BY produk. (2) Total omzet 479.000 dibagi 7 transaksi, sekitar 68.429, memakai AVG(jumlah * harga). (3) 78.000, dari transaksi Roti di Surabaya (60.000) dan Teh di Bandung (18.000), memakai WHERE tanggal = '2026-09-03'.

Kalau hasilmu berbeda, periksa dulu apakah kamu menghitung jumlah * harga dan bukan hanya salah satunya.

Langkah berikutnya

Kuasai lima pola ini sampai lancar, lalu lanjutkan ke subquery dan window function untuk analisis yang lebih tajam, seperti peringkat dan total berjalan. Cara termudah berlatih: buat tabel kecil sendiri di SQLite atau MySQL, isi dengan data dari kehidupanmu, lalu ajukan pertanyaan seperti di atas.

Kalau artikel ini membantu, langkah berikutnya ada di ebook SQL untuk Analis Data.

Mau lebih lengkap?

Pelajari sampai tuntas di “SQL untuk Analis Data”

Hampir semua data perusahaan tersimpan di database, dan SQL adalah bahasa untuk bertanya kepadanya. Buku ini mengajarkan SQL dari query pertama sampai teknik analisis yang dipakai...

Rp49.000 Lihat isi buku
Cukup masuk akun, tanpa bayar

Ebook gratis untukmu

Baca juga

Artikel lainnya

Semua artikel