1.
Buat query untuk
menampilkan nama, nomer departemen, dan gaji dari pegawai yang yang memiliki
nomer departemen dan gaji yang sama dengan nomer departemen dan gaji dari
pegawai yang memiliki komisi.
Jawab :
SELECT last_name, departement_id,salary
FROM employees
WHERE (departement_id,salary) IN (SELECT
departement_id,salary FROM employees WHERE commission_pct IS NOT NULL);
2.
Buat query untuk
menampilkan nama pegawai, nama departemen, dan gaji dari pegawai yang memiliki
gaji dan komisi yang sama dengan gaji dan komisi dari pegawai yang memiliki
location ID 1700.
Jawab :
SELECT first_name,departement_name,salary
FROM employees e, departements d
WHERE e.departement_id=d.departement_id
AND (salary,nvl (commission_pct,0)) IN
(SELECT salary,nvl (commission_pct,0)) FROM employees e, departement d WHERE
departement_id= d.departement_id and location_id=1700));
3.
Buat query untuk
menampilkan nama pegawai, tanggal mulai masuk kerja (hiredate), dan gaji untuk
semua pegawai yang memiliki gaji dan komisi seperti yang dimiliki oleh pegawai
yang bernama Kochhar.
Note: Data Kochhar tidak ditampilkan dalam hasil query.
Jawab :
SELECT last_name,hire_date,salary
FROM employees
WHERE (salary,nvl(commission_pct,0) IN
(SELECT salary,nvl(commission_pct,0) FROM employees WHERE last_name=’Kochar’)
AND last_name!=’Kochhar’;
4.
Buat query untuk
menampilkan detail dari nomer pegawai, nama pegawai dan nomer pegawai yang sama
dengan pegawai yang bertempat tinggal di kota yang nama kotanya diawali dengan
huruf T.
Jawab :
SELECT e.employee_id, e.first_name,b_employee_id
FROM employees e, (select employee_id from
employees e, departements d, location l where e.departement_id=d.departement_id
and d.location_id=l.location_id and citylke’T%’) b where
e.employee_id=b.employee_id;
5.
Buat query untuk
menampilkan data semua pegawai yang memiliki gaji yang lebih dari rata-rata
gaji pada departemen tempat mereka bekerja. Data yang ditampilkan yaitu nama
pegawai, gaji, nomer departemen, dan rata-rata gaji pada departemen tempat
mereka bekerja. Urutkan berdasarkan rata-rata gaji.
Jawab :
SELECT a.first_name,a.salary,a.departement_id,b.rata
FROM employees a,(SELECT
departmenet_id,AVG(salary) rata FROM employees GROUP BY departement_id)b
WHERE a.departement_id = b.departement_id
AND a.salary > b.rata
ORDER BY b.rata;
6. Tampilkan semua pegawai yang bukan supervisor
a. Cara pertama gunakan operator NOT EXISTS.
Jawab :
SELECT
firts_name from employees e where not exist (select first_name from employees
where manager_id = e.manager_id)
b. Apakah persoalan dapat dipecahkan dengan
menggunakan operator NOT IN? Jika bisa bagaimana caranya, dan jika tidak bisa
mengapa ? (Supervisor adalah pegawai yang punya bawahan pegawai yang lain =>
employee_id nya menjadi manager_id dari pegawai yang lain)
jawab :
SELECT e.employee_id,e.last_name
FROM employees e
WHERE
employee_id NOT IN (SELECT employee_id FROM employees WHERE manager_id =
e.manager_id);
7.
Buat query untuk
menampilkan nama pegawai yang gajinya kurang dari rata-rata gaji pada
departemen tempat dia bekerja.
Jawab :
SELECT ename FROM emp a, (SELECT deptno,avg,sal) avg FROM emp
GROUP BY deptno) b WHERE a.deptno = b.deptno AND a.sal < b.avg;
8.
Buat query untuk
menampilkan nama dari pegawai yang memiliki satu atau lebih kolega (teman satu
departemen) dimana kolega tersebut masuk lebih akhir tapi memiliki gaji lebih
tinggi.
Jawab :
SELECT last_name, salary FROM employees
outter WHERE hire_date > (SELECT hire_date FROM employees WHERE
departement_id = outter.departement_id) AND salary > (SELECT salary FROM
employees WHERE departement_id = outter.departement_id);
9.
Buat query untuk
menampilkan nomer pegawai, nama pegawai dan nama departemen dari semua pegawai
yang ada Note: Gunakan scalar subquery untuk mendapatkan nama departemen
dalam statemen SELECT.
Jawab :
SELECT employee_id,last_name
FROM employees e
ORDER BY (SELECT departement_name FROM
departements d WHERE e.departement_id = d.departement_id);
10. Buat query untuk menampilkan nama departemen dari tiap
departemen yang memiliki total gaji diatas 1/8 dari total gaji keseluruhan pada
perusahaan. Gunakan klausa WITH untuk menulis query tersebut. Beri nama
SUMMARY.
Jawab :
WITH
Dept_sal AS (SELECT
d.departement_name, SUM(e.salary)AS
dept_total FROM employees e,departements d WHERE
e.departement_id=d.departement_id GROUP BY d.departement_name), summary AS
(SELECT departement_name, dept_total FROM dept_sal, employees e WHERE
dept_total > SUM(e.salary)
11. Buat query untuk menampilkan peagwai yang memiliki
gaji yang lebih tinggi dari gaji semua sales managers (JOB_ID = 'SA_MAN').
Urutkan berdasarkan jumlah gaji dari tinggi ke rendah.
Jawab :
SELECT last_name,salary FROM employees
WHERE salary > (SELECT MAX (salary) FROM emploees WHERE job_id=’SA_MAN’)
ORDER BY salary;
ConversionConversion EmoticonEmoticon