100% found this document useful (1 vote)
105 views9 pages

Ditya Felix - Essay Database

The document contains examples of SQL queries and a stored procedure related to an employee database and bus reservation system. The examples include queries to display employees by region, highest paid jobs, employee details with department and location information, and customers whose reservations were not confirmed or checked in. A stored procedure is provided to output passenger and bus details for a given bus ID.

Uploaded by

nija
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
105 views9 pages

Ditya Felix - Essay Database

The document contains examples of SQL queries and a stored procedure related to an employee database and bus reservation system. The examples include queries to display employees by region, highest paid jobs, employee details with department and location information, and customers whose reservations were not confirmed or checked in. A stored procedure is provided to output passenger and bus details for a given bus ID.

Uploaded by

nija
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Neuronworks Soal Essay Database

A. Employee Case

1. Buatlah sebuah Query untuk menampilkan semua karyawan yang berada pada satu region.

SELECT employee_id, first_name, last_name, departement_id


FROM employee
WHERE region_id = '...'; --> masukan sesuai dengan region ingin dicari

2. Buatlah sebuah Query untuk menampilkan nama job yang memiliki salary paling tunggi

SELECT job_title
FROM job_id
WHERE max_salary = (SELECT MAX(max_salary) FROM job_id);
3. Buatlah sebuah query untuk menampilkan nama karyawan, nama department,
lokasi department(kota dan kode pos), serta nama Negara

SELECT e.first_name, e.last_name, d.department_name, l.city, l.postal_code,


c.country_name
FROM employee_id AS e
JOIN department AS d ON e.department_id = d.department_id
JOIN location AS l ON d.location_id = l.location_id
JOIN country AS c ON l.country_id = c.country_id;

4. Buatlah sebuah procedure untuk menampilkan data karyawan dengan fomat


berikut: Nama Karayawan : <NAMA>

Manager :…………………..
Jabatan :…………………..
Departemen :…………………..
History Pekerjaan

Jabatan Tanggal Mulai Tanggal Akhir Departement


DELIMITER //

CREATE PROCEDURE DisplayEmployeeData(IN employee_id INT)


BEGIN
DECLARE employee_name VARCHAR(100);
DECLARE manager_id INT;
DECLARE job_title VARCHAR(100);
DECLARE department_name VARCHAR(100);

//Mengambil nama karyawan//


SELECT CONCAT(first_name, ' ', last_name) INTO employee_name
FROM employee
WHERE employee_id = employee_id;

//Mengambil nama manager//


SELECT manager_id INTO manager_id
FROM employee
WHERE employee_id = employee_id;

//Mengambil jabatan dan departemen//


SELECT j.job_title, d.department_name INTO job_title, department_name
FROM employee e
INNER JOIN job j ON e.job_id = j.job_id
INNER JOIN department d ON e.department_id = d.department_id
WHERE e.employee_id = employee_id;

//Menampilkan data karyawan dengan format yang diminta//


SELECT CONCAT('Nama Karyawan: ', employee_name) AS ' ',
CONCAT('Manager: ', manager_name) AS ' ',
CONCAT('Jabatan: ', job_title) AS ' ',
CONCAT('Departemen: ', department_name) AS ' ',
'History Pekerjaan' AS ' ',
'Jabatan Tanggal Mulai Tanggal Akhir Departemen' AS ' ' ;

//Menampilkan history pekerjaan karyawan//


SELECT CONCAT(jh.job_id, ' ', jh.start_date, ' ', jh.end_date, ' ',
d.department_name) AS ' '
FROM job_history jh
INNER JOIN department d ON jh.department_id = d.department_id
WHERE jh.employee_id = employee_id;

END //

DELIMITER ;
B. Bus Case

Status transaksi :

1. Booking
2. Pembayaran
3. Confirm
4. Not confirm
5. Cetak tiket
6. Tidak cetak tiket
7. Check in
8. Not check in
1. Buatlah sebuah Query untuk menampilkan semua costumer_id, nama
costumer, alamat, no telpon contact person-nya, tujuannya yang tidak jadi
berangkat
SELECT
c.customer_id,
c.name AS customer_name,
a.address1 AS address,
co.phone_number AS contact_phone_number,
dt.destinationname AS destination
FROM
Customer c
JOIN
Address a ON c.customer_id = a.customer_id
JOIN
Contact co ON c.customer_id = co.customer_id
JOIN
TransHeader th ON c.customer_id = th.customer_id
JOIN
DestinationTown dt ON th.destinationtown_id = dt.destinationtown_id
WHERE
th.status IN ('Not confirm', 'Not check in')
2. Buatlah sebuah query untuk menampilkan costumer_id, nama costumer yang dia
sudah cetak tiket namun dia belum teraloksikan di bus

SELECT
c.customer_id,
c.name AS customer_name
FROM
Customer c
JOIN
TransHeader th ON c.customer_id = th.customer_id
WHERE
th.status = 'Cetak tiket'
AND th.transheader_id NOT IN (
SELECT DISTINCT transheader_id
FROM Allocation
)
3. Buatlah sebuah query untuk seluruh penumpang bus dengan kode 39, tujuannya
Jogjakarta. Data yang ditampilkan meliputi nama costumer, qty, alamat, no telp,
contact person, nama kursi. Tampilkan terurut dari kursi depan

SELECT
c.name AS customer_name,
th.qty,
a.address1 AS address,
co.phone_number,
co.name AS contact_person,
a2.name AS seat_name
FROM
Customer c
JOIN
TransHeader th ON c.customer_id = th.customer_id
JOIN
Allocation al ON th.transheader_id = al.transheader_id
JOIN
Bus b ON al.bus_id = b.bus_id
JOIN
Address a ON c.customer_id = a.customer_id
JOIN
Contact co ON c.customer_id = co.customer_id
JOIN
Seat s ON al.seat_id = s.seat_id
JOIN
SeatName a2 ON s.seatname_id = a2.seatname_id
JOIN
DestinationTown dt ON th.destinationtown_id = dt.destinationtown_id
WHERE
b.kode_bus = '39'
AND dt.destinationname = 'Jogjakarta'
ORDER BY
s.seat_id
5. Buatlah sebuah procedure untuk menampilkan penumpang bus dan data detail bus
Dengan format sebagai berikut :
Kode Bus:
Plat Bus :……………………
Nama Bus :……………………
Jumlah Kurs :……………………
Jumlah kursi Terisi :
Tujuan :

Costumer/ikatannya Tgl Daftar Alamat Telp_ContactPerson No Kursi Inputer

CREATE PROCEDURE GetPassengerAndBusDetails(IN bus_id INT)


BEGIN
DECLARE v_plat_bus VARCHAR(20);
DECLARE v_nama_bus VARCHAR(255);
DECLARE v_jumlah_kursi INT;
DECLARE v_jumlah_kursi_terisi INT;
DECLARE v_tujuan VARCHAR(255);

-- Mendapatkan detail bus berdasarkan bus_id


SELECT plat, nama, qty INTO v_plat_bus, v_nama_bus, v_jumlah_kursi
FROM Bus
WHERE bus_id = bus_id;

-- Mendapatkan jumlah kursi terisi


SELECT COUNT(*) INTO v_jumlah_kursi_terisi
FROM Allocation
WHERE bus_id = bus_id;

-- Mendapatkan tujuan bus berdasarkan bus_id


SELECT dt.destinationname INTO v_tujuan
FROM Bus b
JOIN DestinationTown dt ON b.destinationtown_id = dt.destinationtown_id
WHERE b.bus_id = bus_id;

-- Menampilkan hasil
SELECT
'Kode Bus: ' AS ' ',
bus_id AS ' ',
'Plat Bus: ' AS ' ',
v_plat_bus AS ' ',
'Nama Bus: ' AS ' ',
v_nama_bus AS ' ',
'Jumlah Kursi: ' AS ' ',
v_jumlah_kursi AS ' ',
'Jumlah kursi Terisi: ' AS ' ',
v_jumlah_kursi_terisi AS ' ',
'Tujuan: ' AS ' ',
v_tujuan AS ' '
UNION ALL
SELECT
'Costumer/ikatannya: ' AS ' ',
c.name AS ' ',
'Tgl Daftar: ' AS ' ',
c.start_dtm AS ' ',
'Alamat: ' AS ' ',
a.address1 AS ' ',
'Telp_ContactPerson: ' AS ' ',
co.phone_number AS ' ',
'No Kursi: ' AS ' ',
al.no_kursi AS ' ',
'Inputer: ' AS ' ',
c.userid_insert AS ' '
FROM
Customer c
JOIN
Address a ON c.customer_id = a.customer_id
JOIN
Contact co ON c.customer_id = co.customer_id
JOIN
TransHeader th ON c.customer_id = th.customer_id
JOIN
Allocation al ON th.transheader_id = al.transheader_id
WHERE
al.bus_id = bus_id;

END

You might also like