GROUP BY di SQL

Mengelompokkan baris dengan nilai yang sama, lalu menghitung agregat untuk tiap kelompok. Mirip Pivot Table di Excel.

Penjelasan sederhana

GROUP BY mengelompokkan baris yang punya nilai sama, lalu menghitung ringkasan untuk tiap kelompok. Kalau kamu pernah memakai Pivot Table di Excel, konsepnya sama persis.

Bayangkan setumpuk struk belanja yang dipisah ke beberapa keranjang menurut kategori. Setelah itu kamu menghitung isi tiap keranjang: ada berapa struk, berapa total nilainya. Satu keranjang menjadi satu baris hasil.

Sintaks

SELECT kolom_kelompok, AGREGAT(kolom)
FROM nama_tabel
GROUP BY kolom_kelompok;
BagianKeterangan
kolom_kelompokKolom yang jadi dasar pengelompokan. Satu baris hasil untuk tiap nilai unik.
AGREGAT(kolom)COUNT, SUM, AVG, MIN, atau MAX yang dihitung per kelompok.

Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.

Contoh GROUP BY

Data contoh: penjualan

Tabel penjualan

idtanggalkaryawan_idprodukkategoriqtyharga
1 2026-01-05 4 Laptop Elektronik 2 8500000
2 2026-01-12 6 Printer Elektronik 1 2300000
3 2026-01-20 4 Kursi Kantor Furnitur 5 1200000
4 2026-02-03 6 Laptop Elektronik 1 8500000
5 2026-02-14 4 Meja Kerja Furnitur 3 1750000
6 2026-02-25 5 Kertas A4 ATK 20 55000
7 2026-03-02 6 Kursi Kantor Furnitur 4 1200000
8 2026-03-10 4 Printer Elektronik 2 2300000
9 2026-03-18 5 Kertas A4 ATK 30 55000
10 2026-03-27 6 Monitor Elektronik 3 1900000
query.sql
SELECT kategori,
       COUNT(*) AS transaksi,
       SUM(qty * harga) AS omzet
FROM penjualan
GROUP BY kategori
ORDER BY omzet DESC;
>_ Jalankan & ubah query ini di browser

Hasil 3 baris

kategoritransaksiomzet
Elektronik 5 38100000
Furnitur 3 16050000
ATK 2 2750000

Elektronik menyumbang omzet terbesar. Setiap kategori jadi satu baris.

Cara kerjanya, langkah demi langkah

  1. FROM penjualan: 10 transaksi diambil.
  2. GROUP BY kategori: transaksi dipisah ke 3 kelompok: Elektronik (5 transaksi), Furnitur (3), dan ATK (2).
  3. COUNT(*) dan SUM(qty * harga) dihitung di tiap kelompok. Elektronik: 5 transaksi senilai 38.100.000.
  4. ORDER BY omzet DESC: kelompok dengan omzet terbesar ditaruh paling atas.

Dipakai untuk apa di kantor?

  • Omzet per cabang, per bulan, atau per sales.
  • Jumlah pelanggan per kota.
  • Rata-rata nilai pesanan per kategori produk.

Kesalahan yang sering terjadi

  • Menaruh kolom di SELECT yang bukan agregat dan tidak ada di GROUP BY. Kebanyakan database menolaknya, karena tidak jelas nilai mana yang harus ditampilkan untuk satu kelompok.
  • Menyaring hasil hitungan kelompok dengan WHERE. Untuk itu pakai HAVING.
Progres bab Agregat & Grouping 0/6 dipelajari
Lanjut: HAVING

Belajar SQL bareng mentor

Hafal sintaks itu mudah. Menjawab pertanyaan bisnis, itu skill.

Private Class Python & SQL untuk Data: dari query dasar sampai JOIN dan studi kasus kerja, dengan kurikulum dan jadwal yang menyesuaikan kamu.

Lihat Private Class