0% found this document useful (0 votes)
19 views

Modul 2 Basdat II

The document contains code for creating stored procedures and functions in MySQL. The procedures and functions are used to generate IDs, count transactions, and retrieve summary data like the most popular spare parts/services, most/least expensive items. Key steps include concatenating strings, extracting substrings, formatting dates, and generating random numbers to build unique IDs.

Uploaded by

valenciavickyyyy
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

Modul 2 Basdat II

The document contains code for creating stored procedures and functions in MySQL. The procedures and functions are used to generate IDs, count transactions, and retrieve summary data like the most popular spare parts/services, most/least expensive items. Key steps include concatenating strings, extracting substrings, formatting dates, and generating random numbers to build unique IDs.

Uploaded by

valenciavickyyyy
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Modul 2

1.

DELIMITER //

CREATE PROCEDURE Show_Top_Sparepart_Service()

BEGIN

-- Menampilkan sparepart yang paling banyak dibeli

SELECT sp.id_sparepart, sp.nama_sparepart, sp.jenis_sparepart, COUNT(*) AS total_pembelian

FROM tb_pembelian_sparepart AS ps

INNER JOIN tb_sparepart AS sp ON ps.id_sparepart = sp.id_sparepart

GROUP BY sp.id_sparepart

ORDER BY total_pembelian DESC

LIMIT 1;

-- Menampilkan service yang paling banyak dipesan

SELECT s.id_service, s.nama_service, COUNT(*) AS total_pemesanan

FROM tb_pembelian_service AS pservice

INNER JOIN tb_service AS s ON pservice.id_service = s.id_service

GROUP BY s.id_service

ORDER BY total_pemesanan DESC

LIMIT 1;

END //

DELIMITER ;

CALL Show_Top_Sparepart_Service();

2.

DELIMITER //

CREATE PROCEDURE Show_Most_Expensive_Items()

BEGIN

-- Menampilkan harga sparepart yang paling mahal


SELECT id_sparepart, nama_sparepart, jenis_sparepart, MAX(harga) AS harga_sparepart

FROM tb_sparepart;

-- Menampilkan harga service yang paling mahal

SELECT id_service, nama_service, MAX(harga) AS harga_service

FROM tb_service;

END //

DELIMITER ;

CALL Show_Most_Expensive_Items();

3.

DELIMITER //

CREATE PROCEDURE Show_Cheapest_Items()

BEGIN

-- Menampilkan harga sparepart yang paling murah

SELECT id_sparepart, nama_sparepart, jenis_sparepart, MIN(harga) AS harga_sparepart

FROM tb_sparepart;

-- Menampilkan harga service yang paling murah

SELECT id_service, nama_service, MIN(harga) AS harga_service

FROM tb_service;

END //

DELIMITER ;

CALL Show_Cheapest_Items();

4.

DELIMITER //

CREATE PROCEDURE Count_Sparepart_Transactions()


BEGIN

DECLARE total_transactions INT;

-- Menghitung jumlah transaksi pembelian sparepart

SELECT COUNT(DISTINCT id_transaksi) INTO total_transactions

FROM tb_pembelian_sparepart;

-- Menampilkan hasil

SELECT total_transactions AS total_transaksi_pembelian_sparepart;

END //

DELIMITER ;

CALL Count_Sparepart_Transactions();

5.

DELIMITER //

CREATE FUNCTION Generate_Id_Pembelian_Sparepart(

p_nama_pelanggan VARCHAR(255),

p_id_pelanggan INT,

p_nama_pegawai VARCHAR(255),

p_tanggal_pembelian DATE

RETURNS VARCHAR(255)

BEGIN

DECLARE id_pembelian_sparepart VARCHAR(255);

DECLARE nama_pelanggan_prefix VARCHAR(3);

DECLARE nama_pegawai_prefix VARCHAR(3);

DECLARE random_number VARCHAR(5);


-- Mengambil 3 huruf pertama dari nama pelanggan

SET nama_pelanggan_prefix = LEFT(LOWER(p_nama_pelanggan), 3);

-- Mengambil 3 huruf pertama dari nama pegawai

SET nama_pegawai_prefix = LEFT(LOWER(p_nama_pegawai), 3);

-- Konversi tanggal menjadi format yyyymmdd

SET p_tanggal_pembelian = REPLACE(DATE_FORMAT(p_tanggal_pembelian, '%Y%m%d'), '-', '');

-- Generate 5 angka random

SET random_number = LPAD(FLOOR(RAND() * 100000), 5, '0');

-- Gabungkan semua bagian untuk membentuk id_pembelian_sparepart

SET id_pembelian_sparepart = CONCAT(nama_pelanggan_prefix, p_id_pelanggan,


nama_pegawai_prefix, p_tanggal_pembelian, random_number);

RETURN id_pembelian_sparepart;

END //

DELIMITER ;

SELECT Generate_Id_Pembelian_Sparepart('Dodi', 123, 'Andre', '2024-03-12');

SELECT Generate_Id_Pembelian_Sparepart('Sarah', 456, 'John', '2024-03-15');

Mari kita bahas bagian-bagian dari perintah tersebut:

1. LOWER(p_nama_pelanggan): Fungsi LOWER() digunakan untuk mengonversi semua karakter


dalam string p_nama_pelanggan menjadi huruf kecil. Misalnya, jika p_nama_pelanggan adalah
"Dodi", maka hasilnya akan menjadi "dodi".

2. LEFT(string, 3): Fungsi LEFT() digunakan untuk mengambil sejumlah karakter tertentu dari awal
string. Di sini, kita mengambil tiga karakter pertama dari hasil konversi nama pelanggan menjadi
huruf kecil. Dengan demikian, jika nama pelanggan adalah "Dodi", kita akan mengambil "dod".

3. SET nama_pelanggan_prefix: Ini adalah perintah untuk mengatur nilai variabel


nama_pelanggan_prefix dengan hasil dari ekspresi sebelumnya.
Mari kita bahas bagian-bagian dari perintah tersebut:

DATE_FORMAT(p_tanggal_pembelian, '%Y%m%d'): Fungsi DATE_FORMAT() digunakan untuk


memformat tanggal yang diberikan sesuai dengan format yang diinginkan. Dalam hal ini, kita
menggunakan format %Y%m%d, di mana:

%Y: Mewakili tahun dalam format empat digit (contoh: 2024).

%m: Mewakili bulan dalam format dua digit (contoh: 03 untuk Maret).

%d: Mewakili hari dalam format dua digit (contoh: 18).

Fungsi ini akan mengembalikan tanggal dalam format string YYYYMMDD.

REPLACE(string, '-', ''): Fungsi REPLACE() digunakan untuk mengganti semua kemunculan suatu
substring dengan substring lain dalam string yang diberikan. Dalam hal ini, kita mengganti semua
kemunculan tanda penghubung ('-') dengan string kosong (''). Ini berarti kita menghapus semua
tanda penghubung dari string.

string: String yang akan diproses.

'-': Substring yang akan diganti.

'': Substring pengganti (dalam hal ini, string kosong).

6.

DELIMITER //

CREATE FUNCTION Generate_Id_Pembelian_Service(

p_nama_pelanggan VARCHAR(255),

p_id_transaksi INT,

p_nama_pegawai VARCHAR(255),

p_id_pelanggan INT

RETURNS VARCHAR(255)

BEGIN
DECLARE id_pembelian_service VARCHAR(255);

DECLARE nama_pelanggan_prefix VARCHAR(3);

DECLARE nama_pegawai_prefix VARCHAR(3);

DECLARE random_number VARCHAR(5);

-- Mengambil 3 huruf pertama dari nama pelanggan

SET nama_pelanggan_prefix = LEFT(LOWER(p_nama_pelanggan), 3);

-- Mengambil 3 huruf pertama dari nama pegawai

SET nama_pegawai_prefix = LEFT(LOWER(p_nama_pegawai), 3);

-- Generate 5 angka random

SET random_number = LPAD(FLOOR(RAND() * 100000), 5, '0');

-- Gabungkan semua bagian untuk membentuk id_pembelian_service

SET id_pembelian_service = CONCAT(nama_pelanggan_prefix, p_id_transaksi, nama_pegawai_prefix,


p_id_pelanggan, random_number);

RETURN id_pembelian_service;

END //

DELIMITER ;

SELECT Generate_Id_Pembelian_Service('Dodi', 123, 'Andre', 456);

Mari kita bahas bagian-bagian dari perintah tersebut:

1. RAND(): Fungsi RAND() digunakan untuk menghasilkan nilai acak antara 0 dan 1.

2. FLOOR(RAND() * 100000): Dalam bagian ini, kita mengambil nilai acak yang dihasilkan oleh
RAND() dan mengalikannya dengan 100000 untuk mendapatkan nilai antara 0 dan 99999.
Kemudian, FLOOR() digunakan untuk membulatkan hasil ke bawah ke bilangan bulat terdekat.

3. LPAD(value, length, 'pad_string'): Fungsi LPAD() digunakan untuk memperluas nilai value
dengan menambahkan karakter 'pad_string' ke kiri hingga mencapai panjang length. Jika
panjang nilai value sudah sama atau lebih besar dari length, fungsi ini tidak melakukan apa pun.
Dalam hal ini, 'pad_string' adalah '0'.

 value: Nilai yang akan dipanjangkan.

 length: Panjang maksimum hasil yang diinginkan.

 'pad_string': Karakter yang akan ditambahkan jika perlu.

You might also like