Sintaks
SELECT kolom_kelompok, AGREGAT(kolom)
FROM nama_tabel
GROUP BY kolom_kelompok;
| Bagian | Keterangan |
|---|---|
kolom_kelompok | Kolom 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
| id | tanggal | karyawan_id | produk | kategori | qty | harga |
|---|---|---|---|---|---|---|
| 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 |
SELECT kategori,
COUNT(*) AS transaksi,
SUM(qty * harga) AS omzet
FROM penjualan
GROUP BY kategori
ORDER BY omzet DESC;
Hasil 3 baris
| kategori | transaksi | omzet |
|---|---|---|
| Elektronik | 5 | 38100000 |
| Furnitur | 3 | 16050000 |
| ATK | 2 | 2750000 |
Elektronik menyumbang omzet terbesar. Setiap kategori jadi satu baris.