GROUP BY untuk Satu dan Banyak Kolom
Kelompokkan baris berdasarkan satu atau beberapa kolom untuk menghasilkan subtotal dan uraian kategori, lalu baca rencana kueri GROUP BY.
GROUP BY untuk Satu dan Banyak Kolom adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Fungsi GROUP BY
GROUP BY membagi baris menjadi beberapa grup berdasarkan nilai satu kolom atau lebih, lalu menerapkan fungsi agregat pada setiap grup.
Pengelompokan Satu Kolom
Total pesanan untuk setiap pengguna:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Pengelompokan Banyak Kolom
Subgrup berdasarkan kategori dan negara:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Setiap Kolom dalam SELECT Harus Dikelompokkan atau Diagregasikan
Aturan SQL standar:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY berdasarkan Ekspresi
Kelompokkan berdasarkan hasil suatu ekspresi, misalnya pengelompokan bulan:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY berdasarkan Posisi atau Alias
Anda dapat mengelompokkan berdasarkan posisi atau alias dalam daftar SELECT (PostgreSQL):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionGROUPING SETS, ROLLUP, CUBE
Hitung beberapa pengelompokan dalam satu kueri—sangat cocok untuk subtotal:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalGrup Kosong Tidak Ada
GROUP BY hanya mengembalikan grup yang memiliki setidaknya satu baris. Jika Anda ingin menampilkan setiap kategori, termasuk kategori yang memiliki nol pesanan, gunakan LEFT JOIN dari daftar utama lalu lakukan agregasi.
GROUP BY dan Indeks
Perencana kueri dapat menggunakan agregasi hash (membangun tabel hash berisi grup) atau strategi pengurutan lalu pengelompokan. Indeks pada kolom pengelompokan dapat mempercepat pendekatan kedua.
Fungsi Jendela vs GROUP BY
GROUP BY menggabungkan beberapa baris menjadi satu. Fungsi jendela menambahkan kolom agregat sambil mempertahankan setiap baris. Pilih alat yang tepat—materi ini dibahas dalam Pendalaman Fungsi Jendela.
Alias dalam HAVING vs WHERE
Urutan logis: FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE tidak dapat melihat hasil agregasi; HAVING dapat.
Ringkasan
GROUP BY adalah alat utama untuk membuat laporan.
- Setiap kolom dalam SELECT harus dikelompokkan atau diagregasikan
- Kelompokkan berdasarkan kolom, ekspresi, atau alias
- Gunakan ROLLUP/CUBE/GROUPING SETS untuk tabel silang
Pemeriksaan Singkat
Dalam kueri GROUP BY country, apakah daftar SELECT boleh menyertakan kolom city yang tidak diagregasikan maupun dikelompokkan?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “GROUP BY untuk Satu dan Banyak Kolom” gratis?
Ya — teks lengkap “GROUP BY untuk Satu dan Banyak Kolom” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “GROUP BY untuk Satu dan Banyak Kolom”?
Kelompokkan baris berdasarkan satu atau beberapa kolom untuk menghasilkan subtotal dan uraian kategori, lalu baca rencana kueri GROUP BY. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “GROUP BY untuk Satu dan Banyak Kolom” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY untuk Satu dan Banyak Kolom
- HAVING vs WHERE
- Jebakan Umum: NULL dalam Agregat