Dalam operasional kampus, sering kali pimpinan tidak hanya menanyakan "Berapa jumlah total mahasiswa?", melainkan pertanyaan yang lebih mendetail seperti: "Berapa jumlah mahasiswa di tiap-tiap jurusan?" atau "Berapa rata-rata nilai per mata kuliah?".

Kata kunci "per" atau "setiap" mengindikasikan bahwa kita perlu melakukan pengelompokan. Bab ini akan membahas tuntas bagaimana instruksi GROUP BY bekerja untuk meringkas ribuan baris data menjadi tabel informasi yang kategoris dan siap pakai untuk laporan manajemen.

10.1. Konsep Grouping

pexels-fauxels-3184418.jpg

Secara logika, pengelompokan (grouping) adalah proses memecah tabel besar menjadi beberapa "kelompok kecil" berdasarkan nilai yang sama pada kolom tertentu, kemudian meringkas setiap kelompok kecil tersebut menjadi tepat satu baris hasil.

10.1.1. Logika Kerja GROUP BY

Bayangkan Anda memiliki satu keranjang besar berisi formulir pendaftaran dari 1.000 mahasiswa. Anda diminta untuk merangkum data tersebut. Apa yang Anda lakukan secara manual?

  1. Pemisahan: Anda membuat beberapa tumpukan kertas di atas meja. Tumpukan pertama untuk jurusan 'Informatika', tumpukan kedua untuk 'Sistem Informasi', dan seterusnya.
  2. Meringkas: Setelah semua terbagi, Anda menghitung jumlah kertas di setiap tumpukan.
  3. Pelaporan: Anda menuliskan hasilnya: "Informatika: 400 orang", "Sistem Informasi: 300 orang", dsb.

Itulah persis yang dilakukan oleh perintah GROUP BY di dalam mesin basis data.

10.1.2. Sintaks Dasar

Perintah GROUP BY diletakkan setelah klausa FROM atau WHERE (jika ada).

SELECT kolom_kategori, fungsi_agregat(kolom_nilai)
FROM nama_tabel
GROUP BY kolom_kategori;

Contoh Kasus Database Kampus:

Mari kita lihat daftar kota asal mahasiswa dan hitung berapa banyak mahasiswa dari masing-masing kota tersebut.

SELECT alamat, COUNT(nim) AS jumlah_mahasiswa
FROM mahasiswa
GROUP BY alamat;

Dalam perintah di atas, basis data akan:

  1. Melihat kolom alamat.
  2. Mengumpulkan semua mahasiswa yang alamatnya sama (misal: semua yang 'Pasuruan' dikumpulkan jadi satu).