Study Case Menghitung Total Jam Kerja Karyawan dalam Periode Tertentu di MySQL

Tutorial ini menjelaskan cara menghitung total jam kerja karyawan dalam periode tertentu menggunakan MySQL. Data jam kerja ini berguna untuk analisis produktivitas, penggajian, dan laporan manajemen.


Langkah-langkah

1. Persiapan Database dan Tabel

Buat tabel bernama absensi untuk menyimpan data masuk dan keluar karyawan.


Query Membuat Tabel:

CREATE TABLE absensi (

    id INT PRIMARY KEY AUTO_INCREMENT,

    id_karyawan INT NOT NULL,

    nama_karyawan VARCHAR(100) NOT NULL,

    tanggal DATE NOT NULL,

    jam_masuk TIME NOT NULL,

    jam_keluar TIME NOT NULL

);


Penjelasan Kolom:


id: ID unik untuk setiap catatan.

id_karyawan: ID unik untuk karyawan.

nama_karyawan: Nama karyawan.

tanggal: Tanggal kehadiran.

jam_masuk: Waktu masuk kerja.

jam_keluar: Waktu keluar kerja.


2. Memasukkan Contoh Data

Tambahkan data ke tabel untuk simulasi.


Query Menambahkan Data:

INSERT INTO absensi (id_karyawan, nama_karyawan, tanggal, jam_masuk, jam_keluar)

VALUES

(1, 'Andi', '2025-01-01', '08:00:00', '16:00:00'),

(1, 'Andi', '2025-01-02', '08:30:00', '16:30:00'),

(2, 'Budi', '2025-01-01', '09:00:00', '17:00:00'),

(2, 'Budi', '2025-01-02', '09:15:00', '17:15:00'),

(3, 'Citra', '2025-01-01', '08:00:00', '15:30:00'),

(3, 'Citra', '2025-01-02', '08:00:00', '16:00:00');


Data pada Tabel:


3. Menghitung Jam Kerja Harian

Hitung durasi jam kerja harian untuk setiap catatan.


Query SQL:


SELECT 

    id_karyawan,

    nama_karyawan,

    tanggal,

    TIMESTAMPDIFF(HOUR, jam_masuk, jam_keluar) AS jam_kerja

FROM 

    absensi;


Hasil Query:


4. Menghitung Total Jam Kerja dalam Periode Tertentu

Gunakan fungsi agregasi SUM untuk menghitung total jam kerja karyawan dalam periode tertentu.


Query SQL:

SELECT 

    id_karyawan,

    nama_karyawan,

    SUM(TIMESTAMPDIFF(HOUR, jam_masuk, jam_keluar)) AS total_jam_kerja

FROM 

    absensi

WHERE 

    tanggal BETWEEN '2025-01-01' AND '2025-01-02'

GROUP BY 

    id_karyawan, nama_karyawan;


Penjelasan Query:

SUM(TIMESTAMPDIFF(HOUR, jam_masuk, jam_keluar)): Menjumlahkan total jam kerja.

WHERE tanggal BETWEEN '2025-01-01' AND '2025-01-02': Menyaring data berdasarkan periode tertentu.

GROUP BY id_karyawan, nama_karyawan: Mengelompokkan hasil berdasarkan karyawan.

Hasil Query:




5. Menyimpan Hasil ke dalam Tabel Baru

Simpan hasil ini untuk keperluan laporan atau analisis lebih lanjut.


Query Membuat Tabel Baru:

CREATE TABLE total_jam_kerja AS

SELECT 

    id_karyawan,

    nama_karyawan,

    SUM(TIMESTAMPDIFF(HOUR, jam_masuk, jam_keluar)) AS total_jam_kerja

FROM 

    absensi

WHERE 

    tanggal BETWEEN '2025-01-01' AND '2025-01-02'

GROUP BY 

    id_karyawan, nama_karyawan;



Dengan tutorial ini, Anda dapat:

  • Menghitung jam kerja harian karyawan.
  • Mengakumulasi total jam kerja untuk periode tertentu.
  • Menyimpan hasil penghitungan ke dalam tabel baru untuk analisis lebih lanjut.

Langkah ini sangat bermanfaat untuk memonitor kinerja karyawan dan membuat keputusan terkait jadwal kerja atau penggajian. Semoga bermanfaat dan mohon maaf jika ada ditemukan infomasi yang tidak sesuai.

Comments

Popular posts from this blog

Integrating PHP with Message Queues RabbitMQ Kafka

FastAPI and UVLoop: The Perfect Pair for Asynchronous API Development

Konfigurasi dan Instalasi PostgreSQL Secara Lengkap di Windows Linux dan MacOS