Setelah kegiatan pembelajaran ini, diharapkan:
- Siswa mampu memahami perintah grouping dalam basis data
- Siswa mampu menuliskan perintah fungsi agregasi dengan pengelompokan data dengan benar
- Siswa mampu menerapkan fungsi agregasi dengan pengelompokan data dalam basis data
Tabel yang kita gunakan adalah nilai_ujian yang dapat dilihat seperti di bawah ini.
id_nilai | id_siswa | id_matpel | nilai | predikat_nilai | keterangan |
---|---|---|---|---|---|
N01 | S01 | M02 | 73 | Cukup | Lulus |
N02 | S02 | M02 | 75 | Baik | Lulus |
N03 | S03 | M02 | 65 | Kurang | Tidak Lulus |
N04 | S04 | M02 | 55 | Kurang | Tidak Lulus |
N05 | S05 | M02 | 80 | Baik | Lulus |
N06 | S06 | M02 | 65 | Kurang | Tidak Lulus |
N07 | S07 | M02 | 86 | Baik Sekali | Lulus |
N08 | S08 | M02 | 85 | Baik Sekali | Lulus |
N09 | S09 | M02 | 60 | Kurang | Tidak Lulus |
N10 | S10 | M02 | 90 | Baik Sekali | Lulus |
Pada kebutuhan tertentu, kita ingin menghitung agregat untuk data dengan karakteristik tertentu. Misalnya, kita mungkin ingin mengetahui banyak siswa untuk setiap predikat nilai. Kita dapat menghitung setiap angka dengan serangkaian kueri dengan pernyataan WHERE yang berbeda, seperti:
SELECT COUNT(*) AS banyak_siswa FROM nilai_ujian WHERE predikat_nilai = "Baik Sekali"; SELECT COUNT(*) AS banyak_siswa FROM nilai_ujian WHERE predikat_nilai = "Baik"; SELECT COUNT(*) AS banyak_siswa FROM nilai_ujian WHERE predikat_nilai = "Cukup"; SELECT COUNT(*) AS banyak_siswa FROM nilai_ujian WHERE predikat_nilai = "Kurang";
Tetapi ada cara yang lebih baik, yaitu kita dapat menggunakan GROUP BY untuk melakukan ini dalam satu langkah. Kueri yang bisa digunakan adalah sebagai berikut:
Hasilnya adalah:
Cobalah kueri di atas pada kotak inputan coba kueri di bawah ini.
Pernyataan SELECT di atas menentukan dua kolom, kolom predikat_nilai yang berisi predikat nilai dan banyak_siswa yang merupakan perhitungan banyak siswa (dibuat menggunakan fungsi COUNT(*)). Klausa GROUP BY memerintahkan database untuk mengurutkan data dan mengelompokkannya berdasarkan predikat nilai. Klausa GROUP BY menginstruksikan database untuk mengelompokkan data dan kemudian melakukan agregat pada setiap kelompok.
Contoh selanjutnya, menampilkan banyaknya siswa berdasarkan keterangannya. Kita dapat menggunakan kueri sebagai berikut.
Hasilnya adalah:
Cobalah kueri di atas pada kotak inputan coba kueri di bawah ini.
GROUP BY juga dapat digunakan dengan klausa WHERE. Untuk melakukan hal ini, letakkan GROUP BY setelah WHERE dalam statement SQL.
Tabel yang kita gunakan adalah biodata_siswa yang dapat dilihat seperti di bawah ini.
id_siswa | nis | nama | jns_kel | umur | tinggi_badan | berat_badan |
---|---|---|---|---|---|---|
S01 | 13261 | Aisyah Alifa | P | 17 | 155 | 45 |
S02 | 13262 | Rendra Kurniawan | L | 18 | 173 | 55 |
S03 | 13263 | Iqbal Maulana Hakim | L | 19 | 165 | 50 |
S04 | 13264 | Gracia Putri Lestari | P | 18 | 158 | 46 |
S05 | 13265 | Nanda Amira Athaya | P | 17 | 156 | 41 |
S06 | 13266 | Fajar Setiawan | L | 17 | 153 | 45 |
S07 | 13267 | Naura Athalia | P | 18 | 171 | 60 |
S08 | 13268 | Irfan Maulana | L | 17 | 163 | 58 |
S09 | 13269 | Yudi Prasetyo Nugroho | L | 19 | 175 | 62 |
S10 | 13270 | Rayhanah Aziza | P | 19 | 154 | 43 |
Misalkan kita hanya ingin mengetahui rata-rata tinggi badan siswa yang berumur 17 tahun untuk setiap jenis kelamin. Kita dapat menggunakan kueri sebagai berikut.
Hasilnya adalah:
Cobalah kueri di atas pada kotak inputan coba kueri di bawah ini.
Untuk melihat kemampuan menuliskan perintah COUNT dengan GROUP BY dan menerapkannya dalam basis data, silahkan kerjakan latihan di bawah ini.
Lengkapilah kueri di bawah ini dengan mengetikkan jawaban pada kotak inputan yang disediakan. Border kotak inputan berwarna hijau jika jawaban Anda benar dan berwarna merah jika jawaban Anda salah.
Perintah: Menampilkan banyaknya karyawan dengan nama kolom alias banyak_karyawan dari tabel dengan nama karyawan dan kelompokkan berdasarkan jns_kel
SELECT , AS banyak_karyawan FROM karyawan
;
SELECT jns_kel, COUNT(*) AS banyak_karyawan FROM karyawan
GROUP BY jns_kel;
Tabel telah tersedia dengan nama
Tampilkanlah banyaknya jabatan dengan nama kolom alias banyak_jabatan dan kelompokkan berdasarkan divisi
Hasilnya adalah:
Tabel telah tersedia dengan nama
Tampilkanlah banyaknya proyek dengan nama kolom alias banyak_proyek dan kelompokkan berdasarkan status
Hasilnya adalah:
Kamu menjawab dari 3 soal dengan benar!