Jumat, 22 Januari 2010

Studi Kasus SQL : Penggajian dan Absensi Karyawan

Dalam suatu aplikasi di sebuah perusahaan biasanya dilengkapi dengan aplikasi absensi karyawan yang dalam implementasinya mengikuti teknologi yang ada misalnya dengan menggunakan barcode, finggerprint atau dinput manual. Terlepas dari itu semua, akhir dari aplikasi tersebut semuanya berujung pada penggajian karyawan.
Berikut ini contoh tabel penggajian karyawan beserta tanya jawab SQL yang sangat berguna untuk kepentingan laporan keuangan serta operasional perusahaan.

Keterangan fungsi Tabel

No Nama Tabel Fungsi
1 TAbsen Untuk menyimpan data absensi karyawan
2 TKry Untuk menyimpan data karyawan
3 TUser Untuk menyimpan data karyawan bagian keuangan yang mengoprasikan aplikasi penggajian
4 TStatus Untuk menyimpan data Status karyawan, tabel ini berkaitan dengan tunjangan karyawan berdasarkan status, misalkan status menikah dengan 2 anak maka tunjangannya berbeda dengan menikah tanpa anak dan seterusnya.
5 TJabatan Untuk menyimpan deskripsi jabatan serta tunjangan yang diberikan berkaitan dengan jabatan tersebut
6 Tkonstanta Untuk menyimpan variabel yang bersifat konstan seperti besarnya uang makan yang selalu berubah mengikuti perkembangan jaman.
7 TLog Untuk menyimpan data user saat login yang digunakan untuk memantau aktifitas user serta digunakan untuk merekam user yang menggunakan aplikasi ini

Pertanyaan dan Jawaban Query
Penggajian dan Absensi Karyawan

1. Inputkan 1 data karyawan ke Tkry
Jawab
Insert into TKry values (‘2000’,’Dewi’,’Kuningan’,’01’,’3340230’,’12-10-2007’, ’27-01-1990’,’01’,’1000000’,’0’)
2. Inputkan 1 data karyawan ke Tkry tanpa data notelp dan tgllahir
Jawab
Insert into Tkry (nip,nama,alamat,kodestatus,tglmasuk, kodejabatan,gajipokok,statusmasuk) values (‘2001’,’Agus’,’Kuningan’,’01’,’12-10-2007’,’01’,’1000000’,’0’)
3. Inputkan 2 data karyawan ke Tkry sekaligus
Jawab
Insert into Tkry values
(‘2002’,’Banu’,’cirebon’,’01’,’3999230’,’11-10-2007’, ’22-01-1988’,’01’,’1000000’,’0’),
(‘2003’,’Andi’,’cirebon’,’01’,’2023230’,’11-10-2007’, ’122-01-1978’,’01’,’1000000’,’0’)
4. Editlah data karyawan dengan Nip 2001 gantilah alamat kuningan menjadi cirebon
Jawab
Update Tkry set alamat=’Cirebon’ where nip=’2001’
5. Hapuslah data karyawan dengan nama Agus dan Nip 2001
Jawab
Delete from Tkry where nip=’2001’
6. Tampilkan semua data karyawan
Jawab
Select * from TKry
7. Tampilkan data absensi bulan januari 2009
Jawab
SELECT tkry.nama, count(tabsen.nip) as jumlah_absen
from tkry,tabsen
where tkry.nip=tabsen.nip and tabsen.tgl like ‘%01-2009’
group by tkry.nama
8. Tampilkan data gaji bulan januari 2009
Jawab
SELECT Tkry.Nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih
from tkry,tgaji
where tkry.nip=tgaji.nip and tgaji.bulan=’01/2009’
9. Tampilkan karyawan yang tidak masuk hari ini
Jawab
Select tkry.Nip, tkry.Nama from tkry,tabsen
where tkry.statusmasuk=’0’ and
tabsen.tgl=’02/01/2009’ and
tkry.nip=tabsen.nip
10. Tampilkan data gaji karyawan yang tidak mempunyai tunjangan dengan format Nip, Nama, gaji_bersih
Jawab
select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih
from tkry, tgaji
where
(tunjanganstatus+tunjanganjabatan)=0 and
Tkry.nip=tabsen.nip and
Tabsen.bulan=’01/2009’
11. Tampilkan data gaji karyawan yang tunjangannya kurang dari 1 juta dengan format Nip, Nama, gaji_bersih
Jawab
select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih
from tkry, tgaji
where
(tunjanganstatus+tunjanganjabatan)<1000000 and
Tkry.nip=tabsen.nip and
Tabsen.bulan=’01/2009’
12. Tampilkan data gaji karyawan yang pajak pph21 kurang dari 100 ribu dengan format Nip, Nama, gaji_bersih
Jawab
select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih
from tkry, tgaji
where
tabsen.pph21 <=100000 and
Tkry.nip=tabsen.nip and
Tabsen.bulan=’01/2009’
13. Tampilkan data log user bulan januari 2009
Jawab
Select * from tlog where tgl like ‘%01/2009’
14. Tampilkan data karyawan yang mempunyai 1 anak
Jawab
Select * from tkry,tstatus
Where tkry.kodestatus=tstatus.kodestatus and
Tstatus.jumlahanak=’1’
15. Tampilkan data karyawan yang jabatannya staff
Jawab
Select * from tkry, tjabatan
Where tkry.kodejabatan=tjabatan.kodejabatan and
Jabatan=’staff’
16. Tampilkan data gaji karyawan yang masih singel dengan format Nip, Nama, gaji_bersih
Jawab
select tkry.nip, tkry.nama,(tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih
from tkry, tgaji, tstatus
where
Tkry.nip=tabsen.nip and
Tkry.kodestatus=tstatus.kodestatus and
Tstatus.status=’singel’ and
Tabsen.bulan=’01/2009’
17. Tampilkan data karyawan yang tinggal di cirebon
Jawab
Select * from tkry where alamat like ’%cirebon’
18. Tampilkan Jumlah total uang yang harus dibayarkan kepada karyawan, jumlah total pajak yang harus disetorkan dan jumlah total infaq yang harus didistribusikan selama bulan januari 2009
Jawab
Select sum(tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as Total_Gaji, sum(pph21) as total_pajak, sum(infaq) as Total_Infaq from tgaji
Where bulan = ‘01/2009’
19. Tampilkan data karyawan yang absennya kurang dari 20 hari di bulan januari 2009 dengan format Nip, Nama, jumlah_absen
Jawab

Select tkry.Nip, Nama, count(tabsen.nip) as Jumlah_absen from tkry, tabsen where tkry.nip=tabsen.nip group by tkry.nip,tkry.nama having count(tabsen.nip)<20
20. Tampilkan data karyawan yang tidak mengisi jam keluar selama bulan januari 2009 kurang dari 5
Jawab
Select tkry.Nip, Nama, count(tabsen.nip) as Jumlah_absen from tkry, tabsen where tkry.nip=tabsen.nip and tabsen.jamkeluar is null group by tkry.nip,tkry.nama

Dengan panduan tanya jawab diatas sudah hampir mewakili seluruh query yang ada pada program aplikasi penggajian karyawan serta absensinya, pekerjaan seorang DBA adalah menjawab pertanyaan yang diminta oleh user. Dalam prakteknya pertanyaan itu akan berkembang menjadi puluhan bahkan ratusan pertanyaan baru yang tidak terfikirkan sebelumnnya.

Tidak ada komentar:

Posting Komentar