You are on page 1of 6

Contoh soal SQL dan Jawabannya (JOIN)

1. Tampilkan nama lengkap pegawai , gaji dan nama pekerjaan yg bekerja pada id job 'ST_MAN'
dimana mana rata2 gaji kurang dari 7000

select e.first_name ||''|| e.last_name as "Nama Lengkap", e.salary, j.job_title


from employees e
join jobs j on (j.job_id=e.job_id)
where j.job_id='ST_MAN'
group by j.job_title ,e.first_name ||''|| e.last_name, e.salary
having avg (salary)<7000;

2. Tampilkan kode pos, nama department dari setiap pegawai yang nama depannya memiliki
huruf a (semua), tampilkan juga nama depannya. Degan panjang nama depan harus lebih dari 8.

select l.postal_code, d.department_name , e.first_name


from employees e
join departments d on (d.department_id=e.department_id)
join locations l on (d.location_id=d.location_id)
where e.first_name like 'A____%';

3. tampilkan id pegawai, nama pegawai, id manager dan nama manager yg bekerja pd id pekerjaan
'ST_CLERK' atau 'IT_PROG' urutkan dari yg terkecil ke yg terbesar berdasarkan id maanger.

select worker.employee_id, worker.first_name||''|| worker.last_name as "Nama Lengkap",


manager.manager_id, manager.last_name
from employees worker join employees manager on (manager.employee_id=worker.manager_id)
where worker.job_id='ST_CLERK' or worker.job_id='IT_PROG'
order by 3 desc;

4. difoto (4 dan 5)

--left
select * from customer c left join penjualan p
on c.kd_cust=p.kd_cust;
--right
select * from customer c right join penjualan p
on c.kd_cust=p.kd_cust;

--full
select * from customer c full outer join penjualan p
on c.kd_cust=p.kd_cust;

5. Tampilkan tgl dan semua kota yg ada baik tlh melakukan transaksi atau belum(table customer dan penjualan)
gunakan left atau right outer join
--left
select tanggal,kota_ust from customer c left join penjualan p
on c.kd_cust=p.kd_cust
where id_penjualan is null or id_penjualan is not null;

--right
select tanggal,kota_ust from customer c right join penjualan p
on c.kd_cust=p.kd_cust
where id_penjualan is null or id_penjualan is not null;

--full
select tanggal,kota_ust from customer c full outer join penjualan p
on c.kd_cust=p.kd_cust
where id_penjualan is null or id_penjualan is not null;

6.select c.country_name, l.postal_code, e.department_id


from employees e
full outer join departments d on (d.department_id=e.department_id)
full outer join locations l on (l.location_id=d.location_id)
full outer join countries c on (c.country_id=c.country_id);
========================================================================

1. menampilkan nama first name dan last_name beserta jumlah


yang dilakukan dan dikapalkan(shipping) oleh perusahaan bernama speedy express;
SELECT firstName, lastName , count(o.orderID)
FROM employees e
JOIN orders o on (e.employeeID = o.employeeID)
JOIN shippers s on (o.shipVia=s.shipperID)
WHERE companyName='Speedy Express'
GROUP BY firstName, lastName;

2. menampilkan data produk (nama supplier, nama priduk, harga, nama kategori) yg hrg rata2nya >54
SELECT s.contactName, p.productName, p.unitPrice, c.categoryName
FROM products p join suppliers s on (s.supplierID=p.supplierID)
JOIN suppliers c on (s.supplierID=p.supplierID)
jOIN categories c on (c.categoryID=p.categoryID)
GROUP BY s.contactname, p.productname,p.unitprice,c.categoryName
HAVING AVG (p.unitPrice)>54;

3. tampilkan nama territory, nama employee, dan jumlah order yg dilayani . yg dimunculkan adalah jml order,
yg dilakukan pd tahun 1996?
SELECT t.territoryDesc, e.firstName, count (o.orderID)
FROM employees e
JOIN employeeterritories et on (et.employeeID=e.employeeID)
JOIN territories t on (t.territoryID=et.territoryID)
join orders o on (o.employeeID=e.employeeID)
where to_char (orderDate,'yyyy')=1996
group by t.territoryDesc, e.firstName;

4. tampilkan nama supplier, nama kategori, dan nama product yg ordernya pernah dilayani oleh employee
bernama fuller (last_name)
select s.companyname, p.categoryid, p.productname from suppliers s
join products p on (s.supplierid=p.supplierid)
join orderdetails od on(p.productid=od.productid)
join orders o on (od.orderid=o.orderid)
join employees e on (e.employeeid=o.employeeid)
where e.lastname like 'Fuller'
group by s.companyname, p.categoryid, p.productname;

5.Query u/ menampilkan produk (product id, product name) yg dibeli customer dari seattle
diketahui hanya 1 customer dari seattle.

select p.productid, p.productname from products p


join orderdetails od on(p.productid=od.productid)
join orders o on (od.orderid=o.orderid)
join customers c on (o.customerid=c.customerid)
where c.city like 'Seattle'
group by p.productid, p.productname, c.customerid;

6. nama produk yg supplier dan customers nya berada pada kota yg sama tampilkan jg nama suppllier
dan nama suppliernya
select p.productname, s.companyname, c.companyname from suppliers s
join products p on (s.supplierid=p.supplierid)
join orderdetails od on(p.productid=od.productid)
join orders o on (od.orderid=o.orderid)
join customers c on (o.customerid=c.customerid)
where s.city = c.city
group by p.productname, s.companyname, c.companyname;

======================================================================

1. tampilkan semua department yg ditunjukan location_id - alamat - kota- provinsi dan


negara
--Natural join
select department_id , location_id, street_address, state_province, country_name
from departments
natural join locations
natural join countries;

--> Using
select department_id , location_id, street_address, state_province, country_name
from departments
join locations using (location_id)
join countries using (country_id);
S
2. HR memerlukan report dari semua employee. tuliskan query yg menampilkan last name,
department number dan department name dari semua employee yg bekerja di toronto

select last_name, department_id, department_name from employees


join departments using (department_id);

3.HR department memerlukan laporan semua employee di toronto , tampilkan last_name , job, department
number dan department name dari semua employee yg bekerja di toronto

select last_name, job_id , department_id, department_name


from employees
join jobs using (job_id)
join departments using (department_id)
join locations using (location_id)
where city='Toronto';

4. Buatlah sebuah laporan yang menampilkan data employee, last_name dan employee_id
serta managernya dan employee id managernya, beri nama alias employee , emp$, manager, mgr$

select emp$.employee_id,(emp$.first_name) ||''|| emp$.last_name employee , mgr$.last_name manager,


mgr$.manager_id
from employees emp$, employees mgr$ where emp$.employee_id = mgr$.manager_id;

5. tampilkan sebuah report yg menampilkan employee last_name, department_id dan semua employee yang
bekerja pada department
dari employee yg di maksud, beri alias

select d.department_id department, e.last_name employee, d.last_name colleague


from employees d, employees e
where d.deparment_id = e.department_id and d.employee_id <> e.employee_id;

6. tampilkan report yang menampilkan job grade dan salary . tampilkan struktur job_grades table lalu buat query
yang menmpilkan the name, job, department
name, salary dan grade untuk semua employees

create table jobs_grade (


grade_level varchar2 (3) null,
lowest_sal number,
highet_sal number);

insert into jobs_grade values ('A',1000,2999);


insert into jobs_grade values ('B',3000,5999);
insert into jobs_grade values ('C',6000,9999);
insert into jobs_grade values ('D',10000,14999);
insert into jobs_grade values ('E',15000,24999);
insert into jobs_grade values ('F',25000,40000);

select e.last_name , e.job_id ,d.department_name, e.salary, j.grade_level


from employees e, jobs_grade j, departments d
where salary between j.lowest_sal and j.highest_sal;

You might also like