Pembagian kelompok Kuliah Kerja Nyata (KKN) seringkali menjadi tantangan tersendiri bagi admin perguruan tinggi, terutama saat harus mengelola data mahasiswa dalam jumlah besar. Dengan memanfaatkan kekuatan SQL, dalam artikel ini menggunakan MySQL, proses ini dapat dilakukan secara efisien dan terstruktur. Pada artikel ini, kami akan membagikan tips praktis dan query SQL yang bisa membantu kamu mengelompokkan mahasiswa KKN secara otomatis, adil, dan fleksibel sesuai kriteria yang ditentukan.
Daftar Isi
Pembagian Kelompok KKN
Pembagian kelompok KKN sering membuat pusing, apalagi kalau mahasiswa yang mengikuti program tersebut sangat banyak . Tapi dengan beberapa trik sederhana SQL, semuanya bisa jadi lebih mudah, otomatis, dan teratur sesuai kriteria yang diinginkan.
— SQL Tips: Pembagian Kelompok KKN

Lembaga Penelitian dan Pengabdian kepada Masyarakat sering menghadapi tantangan besar saat harus mengelola pembagian kelompok KKN. Proses pengacakan kelompok yang seimbang bukan hanya soal membagi jumlah mahasiswa secara rata, tetapi juga mempertimbangkan berbagai faktor seperti latar belakang jurusan, jenis kelamin, dan pencegahan kelompok program studi. Jika dilakukan secara manual, risiko ketidakseimbangan dan ketidakadilan dalam pembagian kelompok pun semakin tinggi.
Selain itu, volume data yang besar dan beragam membuat pengelolaan kelompok menjadi lebih kompleks. Data mahasiswa yang terus bertambah dan berubah harus diolah dengan cepat dan tepat agar pembagian kelompok tetap akurat. Tanpa sistem yang terotomasi dan algoritma yang efektif, lembaga ini sering kali harus menghabiskan banyak waktu dan sumber daya hanya untuk memastikan setiap kelompok mendapatkan komposisi yang ideal dan sesuai aturan yang berlaku.
Penyelesaian Masalah
Proses pembentukan kelompok KKN dimulai dengan pengurutan data, di mana seluruh data mahasiswa disusun berdasarkan kriteria tertentu agar pembagian menjadi lebih terstruktur. Setelah itu, dilakukan pelabelan kelompok, yaitu memberi tanda atau nomor pada setiap mahasiswa sesuai kelompoknya agar mudah diidentifikasi. Terakhir, tahap penyajian data memastikan hasil pembagian kelompok tersaji dengan jelas dan rapi, sehingga dapat langsung digunakan oleh pihak terkait.
Langkah 1: Pengurutan Data
Data diurutkan berdasarkan spesifikasi tertentu, misalnya diurutkan berdasarkan jenis kelamin dan nama program studi
#tabel_data
select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi from registrasi_kkn kr join mahasiswa m on m.nim=kr.nim join person p on p.idperson=m.idperson join prodi ps on ps.idprodi=m.idprodi where idperioderegistrasi=3 order by jeniskelamin, namaprodi
Contoh hasil dalam tabel
NIM | JK | Program Studi |
---|---|---|
1003 | L | A |
1005 | L | A |
2001 | L | B |
2006 | L | B |
3002 | L | C |
1001 | P | A |
1002 | P | A |
1004 | P | A |
1006 | P | A |
1007 | P | A |
2002 | P | B |
2003 | P | B |
2004 | P | B |
2005 | P | B |
2007 | P | B |
3001 | P | C |
3003 | P | C |
urut 1 | urut 2 |
Langkah 2: Pelabelan Kelompok
Baris pertama diberi label kelompok 1, baris kedua diberi label kelompok 2, …, jika sudah mencapai jumlah kelompok, maka baris berikutnya diberi label kelompok mulai dari 1 lagi
#tabel_pembagiankelompok
select *, if(@counter_=@jmlkelompok_, @counter_ := 1, @counter_ := @counter_+1) AS kelompok from tabel_data
Contoh hasil dalam tabel
NIM | JK | Program Studi | Kelompok |
---|---|---|---|
1003 | L | A | 1 |
1005 | L | A | 2 |
2001 | L | B | 3 |
2006 | L | B | 1 |
3002 | L | C | 2 |
1001 | P | A | 3 |
1002 | P | A | 1 |
1004 | P | A | 2 |
1006 | P | A | 3 |
1007 | P | A | 1 |
2002 | P | B | 2 |
2003 | P | B | 3 |
2004 | P | B | 1 |
2005 | P | B | 2 |
2007 | P | B | 3 |
3001 | P | C | 1 |
3003 | P | C | 2 |
Langkah 3: Penyajian Data
Data diurutkan berdasarkan kelompok dan NIM
select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi, kelompok from tabel_pembagiankelompok order by kelompok, nim
Versi Pengurutan Data
1.1. Urutan Acak Mahasiswa di Dalam Program Studi
Urutan acak mahasiswa di dalam program studi berarti mengacak posisi atau NIM secara random namun tetap dilakukan secara terpisah untuk setiap program studi atau jurusan. NIM dalam satu program studi tidak disusun sesuai urutan presensi. Tujuannya agar pembagian kelompok KKN lebih adil dan merata.
Pengacakan urutan mahasiswa di dalam program studi dapat dilakukan dengan memberikan nilai acak menggunakan fungsi RAND()
pada SQL. Fungsi ini menghasilkan angka desimal acak antara 0 dan 1 untuk setiap baris data. Dengan menggabungkan ORDER BY RAND()
dalam query yang telah difilter berdasarkan program studi, sistem akan mengurutkan mahasiswa secara acak namun tetap dalam ruang lingkup program studi masing-masing.
#tabel_data
select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi, rand() as rands from registrasi_kkn kr join mahasiswa m on m.nim=kr.nim join person p on p.idperson=m.idperson join prodi ps on ps.idprodi=m.idprodi where idperioderegistrasi=3 order by jeniskelamin, namaprodi, rands
Contoh hasil dalam tabel
NIM | JK | Rands | Program Studi |
---|---|---|---|
1005 | L | 0.133064 | A |
1003 | L | 0.726198 | A |
2001 | L | 0.399401 | B |
2006 | L | 0.408283 | B |
3002 | L | 0.392394 | C |
1002 | P | 0.079107 | A |
1007 | P | 0.333695 | A |
1006 | P | 0.376642 | A |
1004 | P | 0.394879 | A |
1001 | P | 0.888713 | A |
2004 | P | 0.455081 | B |
2007 | P | 0.643330 | B |
2002 | P | 0.675387 | B |
2005 | P | 0.811695 | B |
2003 | P | 0.976927 | B |
3003 | P | 0.255790 | C |
3001 | P | 0.474213 | C |
urut 1 | urut 3 | urut 2 |
1.2. Urutan Acak Program Studi
Untuk menghasilkan pengacakan yang lebih tidak berpola dan menghindari pola tertentu berdasarkan jenis kelamin atau program studi, salah satu pendekatan yang lebih kuat adalah dengan menggabungkan data jenis kelamin dan program studi dengan satu nilai yang dihasilkan dari fungsi RAND()
, lalu menghasilkan nilai hash dari kombinasi tersebut.
Dalam praktik SQL, ini dapat dilakukan dengan menggabungkan kolom seperti jeniskelamin
, idprodi
, dan satu nilai acak dari RAND()
, lalu menggunakan fungsi hash seperti MD5()
atau SHA1()
untuk menghasilkan nilai unik yang acak. Hasil hash ini kemudian digunakan dalam perintah ORDER BY
, sehingga urutan mahasiswa menjadi lebih sulit ditebak dan benar-benar tersebar secara merata tanpa mengikuti pola tertentu berdasarkan atribut data.
Teknik ini sangat berguna dalam konteks pembagian kelompok KKN agar setiap kelompok berisi kombinasi mahasiswa yang benar-benar acak namun tetap terkendali.
#tabel_data
set @randprodi_ = rand();
select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi, rand() as rands from registrasi_kkn kr join mahasiswa m on m.nim=kr.nim join person p on p.idperson=m.idperson join prodi ps on ps.idprodi=m.idprodi where idperioderegistrasi=@idperiode_ order by jeniskelamin, md5(concat(jeniskelamin, @randprodi_, namaprodi)), rands
Contoh hasil dalam tabel
NIM | JK | Rands | Program Studi |
---|---|---|---|
3002 | L | 0.392394 | 56d296c67df0a2aa2e221a25a89b52eb |
1005 | L | 0.133064 | c3288a83b53f3b7ff2809910c90f0383 |
1003 | L | 0.726198 | c3288a83b53f3b7ff2809910c90f0383 |
2001 | L | 0.399401 | cc6d11030826a5ce7ae9e5d7893c9162 |
2006 | L | 0.408283 | cc6d11030826a5ce7ae9e5d7893c9162 |
3003 | P | 0.255790 | 29a5d343589e368479a0cfc29687b90e |
3001 | P | 0.474213 | 29a5d343589e368479a0cfc29687b90e |
2004 | P | 0.455081 | 2fcddc32db23a67fc35b5d3454ce0400 |
2007 | P | 0.643330 | 2fcddc32db23a67fc35b5d3454ce0400 |
2002 | P | 0.675387 | 2fcddc32db23a67fc35b5d3454ce0400 |
2005 | P | 0.811695 | 2fcddc32db23a67fc35b5d3454ce0400 |
2003 | P | 0.976927 | 2fcddc32db23a67fc35b5d3454ce0400 |
1002 | P | 0.079107 | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
1007 | P | 0.333695 | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
1006 | P | 0.376642 | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
1004 | P | 0.394879 | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
1001 | P | 0.888713 | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
urut 1 | urut 3 | urut 2 |
dimana:
JK | Program Sudi | String | md5 |
---|---|---|---|
L | C | L0.951014C | 56d296c67df0a2aa2e221a25a89b52eb |
L | A | L0.951014A | c3288a83b53f3b7ff2809910c90f0383 |
L | B | L0.951014B | cc6d11030826a5ce7ae9e5d7893c9162 |
P | C | P0.951014C | 29a5d343589e368479a0cfc29687b90e |
P | B | P0.951014B | 2fcddc32db23a67fc35b5d3454ce0400 |
P | A | P0.951014A | 8fd3c7583f07f2b3ec9cdd6e8312fadc |
Hasil Akhir
Sebagai penutup, pendekatan pengacakan data mahasiswa untuk pembagian kelompok KKN tidak hanya bertujuan agar proses pembagian menjadi efisien, tetapi juga untuk memastikan keadilan dan keberagaman dalam setiap kelompok. Dengan memanfaatkan SQL secara cerdas—termasuk penggunaan fungsi acak, hash, dan penyusunan berdasarkan program studi maupun jenis kelamin—proses ini dapat diotomatisasi dengan hasil yang lebih objektif dan tidak berpola.
Berikut adalah contoh query lengkap yang dapat digunakan untuk menghasilkan urutan acak mahasiswa berdasarkan kombinasi program studi dan jenis kelamin dengan pendekatan hash:
set @idperiode_ = 1;
set @jmlkelompok = 80;
set @counter_ = 0;
set @randprodi_ = rand();
select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi, kelompok from
(select *, if(@counter_=80, @counter_ := 1, @counter_ := @counter_+1) AS kelompok from
(select idregistrasi, nim, namalengkap, jeniskelamin, namaprodi, rand() as rands from registrasi_kkn kr join mahasiswa m on m.nim=kr.nim join person p on p.idperson=m.idperson join prodi ps on ps.idprodi=m.idprodi where idperioderegistrasi=@idperiode_ order by jeniskelamin, md5(concat(jeniskelamin, @randprodi_, namaprodi)), rands
) data
) pembagiankelompok
order by kelompok, nim;
Dengan query ini, setiap eksekusi akan menghasilkan urutan yang berbeda-beda, namun tetap mempertimbangkan atribut penting seperti jenis kelamin dan program studi untuk menjaga distribusi yang adil.
Demikian, semoga bermanfaat. [bst]