Studi Kasus Query SQL Data Cuti Karyawan (Part 2)

Suggested by SMS

Assalamu’alaikum wr. wb, para pembaca yang budiman. Artikel ini adalah kelanjutan dari artikel sebelumnya tentang query SQL data cuti karyawan. Pada artikel sebelumnya telah dibahas soal nomor 1 dan 2, kali ini saya akan membahas sisanya yaitu nomor 3 dan 4. Berikut adalah soalnya:

  1. Menampilkan daftar karyawan yang sudah cuti lebih dari satu kali. Daftar berisi nomor_induk, nama, jumlah (berapa kali cuti).
  1. Menampilkan sisa cuti tiap karyawan tahun ini, jika diketahui jatah cuti tiap karyawan tahun ini adalah 12. Daftar berisi nomor_induk, nama, sisa_cuti.

Yuk langsung saja saya mulai pembahasan nomor 3. Yang diminta adalah menampilkan daftar karyawan yang sudah cuti lebih dari satu kali. Pertama-tama yang harus dilakukan adalah JOIN tabel karyawan dengan tabel cuti_karyawan untuk menampilkan nama karyawan. Kedua, adalah mengelompokkan data pada tabel cuti_karyawan berdasarkan nomor_induk. Prosis grouping ini juga bisa sekaligus menghitung jumlah row atau jumlah anggota dari group yang dibuat. Sebagai ilustrasi, mari kita simak data tabel cuti_karyawan berikut ini:

tabel3

Di situ bisa dilihat ada 2 row (baris) data yang memiliki nomor induk IP06001. Nah, fungsi grouping di sini adalah untuk menghitung jumlah row yang memiliki nomor induk yang sama, dalam hal ini berarti dua row. Artinya karyawan dengan nomor induk IP06001 sudah cuti sebanyak dua kali. Di SQL, kita bisa menghitung jumlah row dengan fungsi COUNT(<nama kolom>). Berikut query-nya:

Hasil query-nya adalah:

tabel4

Jumlah cuti per karyawan sudah diketahui, maka kita bisa langsung filter berdasarkan kolom jumlah. Tetapi sebelumnya jangan lupa untuk membuat hasil query sebagai tabel alias, supaya kolom “jumlah” terdefinisi. Ini dia query lengkapnya:

Hasil query-nya adalah sebagai berikut:

tabel5

Yak, data sudah ditampilkan dengan benar, sekarang mari kita lanjut ke soal terakhir yang paling menantang. Untuk bisa menampilkan sisa cuti tahun ini, yang perlu dijadikan catatan adalah “TAHUN INI”. Berarti, harus ada pengecekan tahun pada tanggal_mulai di tabel cuti_karyawan. Cara mengeceknya adalah dengan fungsi YEAR(). Pengecekan ini dilakukan ketika menghitung sisa cuti karena jika suatu row data memiliki tanggal_mulai yang bukan tahun ini, maka row data tersebut tidak perlu ikut dijumlahkan dengan fungsi SUM. Tentu sebelumya kita JOIN dulu tabel cuti_karyawan dengan karyawan untuk menampilkan nama karyawan. Berikut adalah query-nya:

Inilah hasil query di atas:

tabel6

Hasil query di atas hanya menampilkan karyawan yang punya cuti tahun ini, sementara karyawan lain yg tahun ini tidak cuti, tidak ditampilkan. Ini karena fungsi WHERE yang memfilter data berdasarkan tahun. Lalu bagaimana caranya untuk menampilkan data karyawan sisanya yang tahun ini belum cuti, atau dengan kata lain sisa cutinya masih 12 hari? Caranya adalah dengan membuat tabel lain yang menampilkan seluruh karyawan memiliki sisa cuti 12 hari, lalu digabungkan dengan tabel pertama tadi, dengan fungsi UNION pada SQL. Berikut query untuk menampilkan sisa cuti karyawan jika pada suatu tahun sama sekali tidak ada cuti:

Ini dia hasil query-nya:
tabel7

Sekarang kita UNION atau gabungkan dengan tabel sebelumnya dengan query sebagai berikut:

Hasilnya adalah:
tabel8

Di situ bisa dilihat bahwa Agus ada dua row, padahal yang mesti diambil cukup satu saja, yaitu yang pertama. Bagaimana cara mengambil yang pertama saja? Caranya adalah dengan kembali melakukan grouping berdasarkan nomor_induk. Sekali lagi, jangan lupa untuk membuat tabel alias, karena grouping hanya bisa dilakukan pada satu tabel, sementara pada query sebelumnya ada dua tabel, tanpa tabel alias. Oh iya, perlu diingat juga, urutan dalam penggabungan tabel juga penting, karena hasil dari grouping hanya menampilkan row pertama saja, sehingga kalau urutan penggabungannya dibalik, yang ditampilkan malah row satunya lagi yang sisa cutinya 12 hari. Tak perlu berlama-lama lagi, ini dia query lengkapnya:

Sekarang kita langsung lihat hasil query-nya:
tabel9

Sempurna! Demikianlah pembahasan keempat soal studi kasus cuti karyawan kali ini. Cukup kompleks ya? He he he, wajar karena yang namanya menampilkan data tidak selalu sederhana, kadang perlu banyak penghitungan. Karena itu, dibuatlah artikel tutorial ini agar pembaca sekalian menjadi paham sehingga lama-lama terbiasa menghadapi persoalan query SQL semacam ini.

Akhir kata, semoga bermanfaat!

Wassalamu’alaikum wr. wb.

(Visited 1,581 times, 1 visits today)

Leave a Reply

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