MySQL - 20 - Group By (Pengelompokan Data)


Jagat Koding - Group By adalah salah satu statement yang terdapat pada MySQL dan dapat kita gunakan untuk menampilkan data dari hasil perintah SELECT secara berkelompok.

Misalnya saya memiliki sebuah tabel yang berisi 1000 data mahasiswa, dan saya ingin mengetahui berapa jumlah mahasiswa yang berjenis kelamin 'Laki-laki' dan 'Perempuan' pada tabel tersebut. Atau kita juga bisa menampilkan berapa saja umur mahasiswa yang terdapat di tabel tersebut. Berikut adalah format penulisan dari statement Grou By pada MySQL:


SELECT (field_1, field_2, field_n) FROM table_source GROUP BY (nama_field);

Agar bisa memahami lebih jauh, silahkan kalian ikuti langkah - langkah percobaan berikut ini.

Persiapan

Sebelumnya saya sudah membuat sebuah database dengan nama db_kampus. Didalam database db_kampus juga sudah terdapat sebuah tabel dengan nama tb_mahasiswa. Berikut adalah format dari tabel tb_mahasiswa:


MariaDB [db_kampus]> DESC tb_mahasiswa;
+----------------+-------------+------+-----+---------+----------------+
| Field          | Type        | Null | Key | Default | Extra          |
+----------------+-------------+------+-----+---------+----------------+
| id_mahasiswa   | int(11)     | NO   | PRI | NULL    | auto_increment |
| nama_mahasiswa | varchar(50) | YES  |     | NULL    |                |
| jenis_kelamin  | varchar(10) | YES  |     | NULL    |                |
| umur           | int(11)     | YES  |     | NULL    |                |
+----------------+-------------+------+-----+---------+----------------+
4 rows in set (0.02 sec)

Selain itu saya juga sudah menambahkan beberapa data mahasiswa di tabel tersebut sehingga hasilnya adalah sebagai berikut:


MariaDB [db_kampus]> SELECT * FROM tb_mahasiswa;
+--------------+---------------------+---------------+------+
| id_mahasiswa | nama_mahasiswa      | jenis_kelamin | umur |
+--------------+---------------------+---------------+------+
|            1 | Alexander Kurniawan | Laki-laki     |   22 |
|            2 | Hendrik Setiawan    | Laki-laki     |   23 |
|            3 | Dita Leni           | Perempuan     |   21 |
|            4 | Adi Luhung          | Laki-laki     |   22 |
|            5 | Lusi Arianti        | Perempuan     |   23 |
|            6 | Bima Santosa        | Laki-laki     |   22 |
|            7 | Bayu Pamungkas      | Laki-laki     |   22 |
|            8 | Eka Puspita Sari    | Perempuan     |   22 |
+--------------+---------------------+---------------+------+
8 rows in set (0.00 sec)

Percobaan 1

Mari kita mencoba menggunakan statement GROUP BY untuk menampilkan data yang sudah kita miliki di tabel tb_mahasiswa sesuai dengan kelompoknya. Misalnya disini saya akan coba menampilkan apa saja jenis kelamin yang terdapat di tabel tb_mahasiswa. Query dan hasil eksekusinya adalah sebagai berikut:


MariaDB [db_kampus]> SELECT jenis_kelamin FROM tb_mahasiswa GROUP BY jenis_kelamin;
+---------------+
| jenis_kelamin |
+---------------+
| Laki-laki     |
| Perempuan     |
+---------------+
2 rows in set (0.00 sec)

Kalau hanya seperti ini, kita bisa saja menggunakan perintah DISTINCT untuk menampilkan hasil tersebut. Tetapi dengan menggunakan GROUP BY kita juga bisa merekam berapa jumlah data mahasiswa yang memiliki jenis kelamin Laki-laki ataupun Perempuan. Disini kita akan memadukannya dengan pembahasan Fungsi Agregat untuk mendapatkan jumlah dari mahasiswa sesuai dengan jenis kelaminnya. Berikut adalah contoh penggunaannya:


MariaDB [db_kampus]> SELECT jenis_kelamin, COUNT(*) AS 'jml'
    -> FROM tb_mahasiswa
    -> GROUP BY jenis_kelamin;
+---------------+-----+
| jenis_kelamin | jml |
+---------------+-----+
| Laki-laki     |   5 |
| Perempuan     |   3 |
+---------------+-----+
2 rows in set (0.00 sec)

Dari QUERY yang di eksekusi, kita mendapatkan data bahwa di tabel tb_mahasiswa terdapat 5 data mahasiswa berjenis kelamin 'Laki-laki' dan 3 data mahasiswa berjenis kelamin 'Perempuan'. Untuk statement AS 'jml' maksudnya adalah saya bisa menerapkan Alias Column untuk menampilkan judul kolom sesuai dengan yang diinginkan sehingga pada tabel tersebut kolom setelah jenis kelamin adalah 'jml' sesuai yang diketikkan di AS '...'.

Percobaan 2

Bagaimana jika kita ingin menampilkan berapa saja umur mahasiswa yang terdapat di tb_mahasiswa? Sama seperti saat kita menampilkan data jenis kelamin di percobaan 1, kita juga bisa memanfaatkan GOUP BY untuk menyelesaikannya. Berikut adalah hasil percobaannya:


MariaDB [db_kampus]> SELECT umur FROM tb_mahasiswa
    -> GROUP BY umur;
+------+
| umur |
+------+
|   21 |
|   22 |
|   23 |
+------+
3 rows in set (0.00 sec)

Terlihat di atas bahwa data mahasiswa yang terdapat di tb_mahasiswa memiliki umur 21, 22, dan 23. Nah sekarang kita akan menampilkan berapa jumlah mahasiswa yang memiliki umur 21, 22, dan 23. Berikut adalah hasil percobaannya:


MariaDB [db_kampus]> SELECT umur, COUNT(*) AS 'jml'
    -> FROM tb_mahasiswa
    -> GROUP BY umur;
+------+-----+
| umur | jml |
+------+-----+
|   21 |   1 |
|   22 |   5 |
|   23 |   2 |
+------+-----+
3 rows in set (0.00 sec)

Kita dapatkan data bahwa terdapat 1 mahasiswa berumur 21, 5 mahasiswa berumur 22, dan 2 mahasiswa berumur 23. Kalian juga bisa mengkombinasikan Fungsi Agregat lainnya untuk menyelesaikan studi kasus yang konsepnya berbeda.

Sekian pembahasan tentang GROUP BY kali ini, semoga bisa menjadi bahan belajar untuk kita semua. Sampai jumpa di postingan selanjutnya, Terimakasih ...

0 Response to "MySQL - 20 - Group By (Pengelompokan Data)"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel