Query MySQL untuk Range Umur

Query MySQL untuk Range Umur

Beberapa hari yang lalu saya mendapatkan pertanyaan menarik melalui email dari seseorang. Inti pertanyaannya adalah bagaimana perintah query untuk menghitung jumlah mahasiswa berdasarkan range umur. Melalui postingan ini, saya ingin menjawab pertanyaan tersebut secara langkah demi langkah, bagaimana contoh query mysql untuk menampilkan range umur. Semoga bermanfaat.

Contoh Data

Untuk mempermudah pembahasan, kita akan menggunakan contoh data mahasiswa dengan struktur dan data sebagai berikut:

nim nama tgllahir
0111500382 Andy 1982-06-10
0211500220 Indy 1980-02-12
0311500292 Edy 1986-10-10
0911500232 Ani 1988-11-15
1011500299 Ida 1990-12-20
1111500200 Ina 1993-10-12
1211500199 Eni 1995-03-12
1211500333 Uni 1996-01-10

Buatlah terlebih dahulu tabel dan data di atas di MySQL.

Dari tabel di atas, tampilan yang diinginkan adalah sebagai berikut:

RANGE UMUR JUMLAH
… – 20 2
20 – 24 4
25 – 29 2
30 – … 2

Contoh Query MySQL untuk Mencari Umur

Langkah pertama dari data di atas adalah menghitung dan menampilkan umur untuk setiap mahasiswa. Teknik untuk menghitung umur beragam. Saya pernah saya contohkan querynya pada postingan mengenai variasi perintah berhubungan waktu dan tanggal, menggunakan pengurangan tanggal sederhana. Selain teknik tersebut, kita juga bisa menggunakan fungsi timestampdiff() yang tersedia di MySQL.

Berikut ini query dan hasil untuk menghitung umur setiap mahasiswa. Umur dihitung dengan mencari selisih antara tanggal lahir dan tanggal sekarang menggunakan fungsi TIMESTAMPDIFF(). Parameter pertama dari fungsi tersebut adalah “YEAR” untuk menghasilkan format tanggal dalam bentuk tahun saja. Parameter kedua adalah field “tgllahir” yang merupakan tanggal lahir setiap mahasiswa dan parameter ketiga adalah fungsi CURDATE() yang akan menghasilkan tanggal saat ini.

(coding)

Hasil eksekusi query tersebut dengan menggunakan tools Adminer adalah:

Hasil Eksekusi Query 1 untuk Mencari Umur

Hasil Eksekusi Query 1 untuk Mencari Umur

Query untuk Mengelompokkan Umur

Lalu bagaimana mengelompokkan umur yang sudah diperoleh pada query sebelumnya ke dalam distribusi (range) tertentu. Secara sederhana, kita akan mengelompokkan umur mahasiswa berdasarkan sebaran distribusi sebagai berikut:

  • < 20 tahun
  • 20-24 tahun
  • 25-29 tahun
  • >= 30 tahun

(coding)

  • Untuk nama tabel digantikan dengan tabel dummy yang merupakan hasil perintah query 1 (query untuk menghitung umur).
  • Untuk membuat range umur, digunakan struktur CASE-WHEN-THEN. Penjelasan mengenai struktur kondisi ini dapat ditemukan di dokumentasi MySQL.
  • Fungsi COUNT() digunakan untuk menghitung jumlah record berdasarkan range_umur yang telah ditentukan. Fungsi COUNT() merupakan salah satu fungsi agregasi, sehingga diperlukan tambahan perintah GROUP BY untuk mengelompokkan hasil penjumlahan record. Dalam hal ini dikelompokkan berdasarkan range_umur.
  • Pengurutan dengan ORDER BY dapat ditambahkan agar tampilan menjadi terurut.

Hasil dari perintah query 2 di atas adalah sebagai berikut:

Hasil Query 2 Mengelompokkan Umur

Hasil Query 2 Mengelompokkan Umur

Alternatif lain adalah menggunakan query 3 sebagai berikut:

(coding)

Terlihat query 3 di atas lebih sederhana dan singkat. Namun demikian, hasilnya ditampilkan dalam bentuk kolom. Perhatikan tampilan hasil query 3 berikut ini! Terlihat bedanya kan dibanding hasil dari query sebelumnya?

Hasil Query 3

Hasil Query 3

Kesimpulan

Pengelompokkan data seperti pada kasus umur yang dibahas di tutorial ini seringkali ditemui dalam pembangunan suatu aplikasi berbasis web. Contoh lainnya adalah distribusi data berdasarkan agama serta berdasarkan nilai tertentu. Tekniknya pun sebenarnya beragam. Tinggal pilih mana yang paling sesuai dan paling sederhana, sesuai kebutuhan masing-masing. Semoga tutorial ini bermanfaat.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *