TL;DR
QUERY GROUP BY di Google Sheets ngeringkas data jadi total, rata-rata, atau hitungan per grup, mirip SQL. Contoh: =QUERY(A1:C, "SELECT B, SUM(C) GROUP BY B"). Tiap kolom di SELECT harus ada di GROUP BY atau dibungkus fungsi agregasi kayak SUM, AVG, atau COUNT.
QUERY GROUP BY di Google Sheets ngeringkas data jadi total per grup, mirip GROUP BY di SQL. Satu rumus bisa ngubah ribuan baris transaksi jadi ringkasan per kategori.
Kalau biasanya kamu bikin pivot table buat ini, QUERY kasih hasil serupa lewat rumus yang otomatis update tiap data baru masuk. Ga perlu refresh manual.
Di artikel ini kamu bakal belajar cara nulis GROUP BY, gabungin fungsi agregasi kayak SUM dan AVG, filter hasil grup, sampai kesalahan yang paling sering bikin error.
GROUP BY ngelompokin baris yang punya nilai sama di kolom tertentu, lalu ngitung satu nilai ringkasan per kelompok. Misalnya, dari ratusan transaksi, GROUP BY kategori ngasih satu baris total per kategori. Fungsi agregasi kayak SUM atau COUNT yang nentuin angka ringkasannya.
Ini artikel lanjutan dari QUERY SELECT WHERE. Kalau WHERE nyaring baris, GROUP BY ngeringkasnya.
=QUERY(data, "SELECT kolom_grup, FUNGSI(kolom) GROUP BY kolom_grup", 1)
Aturan wajib: tiap kolom di SELECT harus muncul di GROUP BY, atau dibungkus fungsi agregasi. Kalau nggak, QUERY keluar error.
Pakai SUM buat jumlahin nilai tiap grup. Anggap kolom B kategori, kolom C total transaksi.
=QUERY(A1:C, "SELECT B, SUM(C) GROUP BY B", 1)
Hasilnya daftar kategori beserta total masing-masing. Mau diurutin dari terbesar? Tambah ORDER BY di akhir:
=QUERY(A1:C, "SELECT B, SUM(C) GROUP BY B ORDER BY SUM(C) DESC", 1)
Perhatiin, di ORDER BY kamu tulis ulang SUM(C), bukan nama kolom hasil. QUERY belum kenal alias di tahap itu.
| Fungsi | Kegunaan | Contoh |
|---|---|---|
SUM() | Jumlah total | SUM(C) |
AVG() | Rata-rata | AVG(C) |
COUNT() | Hitung jumlah baris | COUNT(A) |
MAX() | Nilai tertinggi | MAX(C) |
MIN() | Nilai terendah | MIN(C) |
Kamu bisa pakai beberapa sekaligus dalam satu SELECT:
=QUERY(A1:C, "SELECT B, SUM(C), AVG(C), COUNT(A) GROUP BY B", 1)
Ini ngasih total, rata-rata, dan jumlah transaksi per kategori dalam satu tarikan. Kalau butuh cara lain yang lebih sederhana buat satu kondisi, SUMIF juga bisa jadi alternatif.
Mau ringkasan per kategori dan per bulan? Masukin dua kolom di GROUP BY, dipisah koma.
=QUERY(A1:D, "SELECT B, C, SUM(D) GROUP BY B, C", 1)
Kolom B kategori, C bulan, D total. Hasilnya kombinasi tiap kategori-bulan beserta totalnya. Ini yang bikin QUERY berasa kayak pivot table dua dimensi.
WHERE difilter sebelum pengelompokan. Jadi kalau mau ringkasan cuma dari transaksi Minuman:
=QUERY(A1:C, "SELECT B, SUM(C) WHERE B = 'Minuman' GROUP BY B", 1)
Urutan klausa di QUERY itu penting: SELECT, WHERE, GROUP BY, ORDER BY. Kalau kebalik, QUERY error. Ingat urutannya persis kayak SQL.
Di dataset toko_berkah ngulikdata ada 14.880 transaksi setahun. Owner mau tau performa 6 kategori: total omzet, rata-rata nilai transaksi, dan jumlah transaksi masing-masing.
=QUERY(transaksi!A1:E,
"SELECT C, SUM(E), AVG(E), COUNT(A)
GROUP BY C
ORDER BY SUM(E) DESC", 1)
Dari hasilnya, kategori Minuman keluar dengan rata-rata nilai transaksi Rp38.400, tertinggi di antara semua kategori, walau jumlah transaksinya bukan yang terbanyak. Insight kayak gini ga keliatan kalau cuma lihat total. Yang tadinya perlu bikin pivot table dan ngerapiin manual, sekarang jadi satu rumus yang refresh sendiri tiap ada penjualan baru.
ADD_COL muncul.SUM(C), bukan nama hasil. QUERY ga kenal alias di ORDER BY.Pivot table itu fitur klik yang bikin ringkasan lewat panel drag and drop, gampang buat eksplorasi cepat. QUERY GROUP BY itu rumus, jadi hasilnya nyatu di sel dan update otomatis tiap data berubah, tanpa refresh manual. Kalau kamu butuh ringkasan yang selalu ikut data terbaru, QUERY lebih praktis. Buat utak-atik cepat, pivot table lebih santai.
Error itu muncul karena ada kolom di SELECT yang ga masuk GROUP BY dan ga dibungkus fungsi agregasi. Aturannya: tiap kolom yang kamu pilih harus dikelompokin atau diagregasi. Cek lagi SELECT kamu, pastikan semua kolom non-hitungan ada di klausa GROUP BY.
Bisa, dan urutannya wajib bener: WHERE dulu, baru GROUP BY. WHERE nyaring baris sebelum dikelompokin, jadi ringkasannya cuma dari baris yang lolos filter. Contoh: SELECT B, SUM(C) WHERE C > 0 GROUP BY B. Kalau urutannya kebalik, QUERY bakal error.
Pakai klausa LABEL di akhir query. Contoh: SELECT B, SUM(C) GROUP BY B LABEL SUM(C) 'Total Omzet'. Ini ngeganti header default yang biasanya jelek kayak 'sum C' jadi nama yang kamu mau. Berguna banget biar hasilnya rapi buat laporan.
QUERY GROUP BY ngeringkas data jadi total, rata-rata, atau hitungan per grup dalam satu rumus. Ingat dua aturan: tiap kolom non-agregasi harus di GROUP BY, dan urutan klausa ikut SQL (WHERE, GROUP BY, ORDER BY).
Sekali lancar, kamu bisa gantiin banyak pivot table dengan rumus yang hidup dan update sendiri.
Mau lanjut ke bentuk ringkasan yang lebih rapi? Baca QUERY SELECT WHERE dan latihan di NgulikSheet. Sintaks lengkap ada di dokumentasi fungsi QUERY dari Google.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
SUMIFS ribet kalau kriterianya banyak dan sering ganti. Rumus database Excel kayak DSUM baca kriteria dari sel terpisah, jadi kamu tinggal ubah tabel kecil tanpa nyentuh rumus.
DATEDIF ngasih umur bulat, tapi kadang kamu butuh angka desimal kayak 27,6 tahun buat hitung masa kerja atau bunga. YEARFRAC ngasih pecahan tahun dengan presisi.
Cara pakai rumus EDATE Excel buat menambah atau mengurangi bulan dari sebuah tanggal. Cocok buat jatuh tempo, tanggal kedaluwarsa, dan jadwal cicilan UMKM.