department_id, rataSalary
penjelasan kita ingin menampilkan last_name, salary, department_id dan rata-rata Salary per
department pada tabel employees dimana salary yang diperoleh lebih besar dari salary rata-rata per
department. hasilnya didapatkan dengan cara menggabungkan dua tabel yaitu tabel employees a dan
tabel B. B itu sendiri merupakan nama alias dari tabel subquery tersebut.
Pada tabel employees A kita menghasilkan last_name, salary, department_id dan pada Tabel B kita
menghasilkan department_id dan rataSalary. Lalu setelah kita mendapatkan hasil dari kedua tabel
tersebut, lalu kita gabungkan kedua tabel tersebut dengan menggunakan department_id pada tabel
employees dan department id yang ada pada tabel B sebagai penghubungnya.
PENJELASAN kita ingin menampilkan last_name, salary, department_id dan rata-rata Salary per
department pada tabel employees dimana salary yang diperoleh lebih besar dari salary rata-rata per
department. hasilnya didapatkan dengan cara menggabungkan dua tabel yaitu tabel employees a dan
tabel B. B itu sendiri merupakan nama alias dari tabel subquery tersebut.
Pada tabel employees A kita menghasilkan last_name, salary, department_id dan pada Tabel B kita
menghasilkan department_id dan rataSalary. Lalu setelah kita mendapatkan hasil dari kedua tabel
tersebut, lalu kita gabungkan kedua tabel tersebut dengan menggunakan department_id pada tabel
employees dan department id yang ada pada tabel B sebagai penghubungnya.
select count(*)
from employees
where department_id = 40
PENJELASAN :Menampilkan berapa banyak jumlah baris dari tabel employees yang
mempunyai department_id = 40
select count(employee_id)
from employees
where department_id = 40
SELECT Employee_id,
first_name FROM Employees WHERE salaryBETWEEN 2000 AND 2300
JOIN merupakan salah satu cara dalam SQL untuk menggabungkan beberapa tabel. Sebelum memulai
perhatikan schema HR terlebih dahulu
INNER JOIN digunakan untuk mencari data yang sama antara dua table, sedangkan OUTER
JOIN digunakan untuk mencari data yang sama sekaligus data yang tidak sama
Natural Joins
Equijoin
non-equijoin
Cross Join
outer join
Full outter Join
Self Join
Cross Join
2 Tabel yang ingin di NATURAL JOIN harus mempunyai minimal satu nama kolom yang sama
contoh : tabel A mempunyai kolom employee_id dan tabel B juga mempunyai kolom
employee_id. kolom employee_id inilah yang akan digunakan untuk menggabungkan ke dua
tabel tersebut
Jika Kolom yang mempunyai nama sama tersebut memiliki type kolom yang berbeda, maka akan
terjadi error
contoh : Tabel A tipe kolom employee_idnya char sedangkan employee_id pada tabel B bertipe
integer
Natural Join akan menampilkan data dimana data tersebut memiliki nilai yang sama antara nama
kolom yang sama pada tabel A dan Tabel B
contoh query :
Penjelasan :
Pada query diatas field department_id, department_name, location_id terdapat pada tabel Departments
dan field location_id, city terdapat pada tabel Locations
USING clause berguna untuk menutupi salah satu kekurangan dari NATURAL JOIN yaitu
menspesifikkan kolom mana yang akan digunakan sebagai penggabung 2 tabel. Hal ini bertujuan
untuk menghindari terjadinya error ketika diantara tabel A dan Tabel B mempunyai beberapa
nama kolom yang sama tetapi salah satu dari kolom yang sama tersebut memiliki tipe data yang
berbeda
Gunakan hanya satu kolom yang akan dijadikan sebagai penggabung tabel
Jangan gunakan tabel alias atau nama tabel kepada kolom yang akan menggunakan USING
clause
contoh query :
Ambiguouos Column Names atau nama kolom yang ambigu merupakan error yang terjadi pada saat
execute, si system yang meng execute tersebut menjadi ‘bingung’ kolom mana yang mau dia ambil.
untuk lebih jelasnya lihat contoh dibawah..
Jika query diatas dijalankan, pasti akan terjadi error, kenapa? karena pada tabel employee dan tabel
departments sama-sama terdapat nama kolom yang sama, yaitu kolom department_id, sehingga si
system menjadi pusing, kolom mana yang mau dia ambil, kolom di employees kah? atau kolom di
departments kah?.
Untuk menghindari kerancuan tersebut maka digunakanlah tabel alias seperti query di bawah.
Intinya penggunaan ON JOIN sama fungsinya dengan menggunakan query dibawah ini:
Query :
OUTER JOIN
Outer Join merupakan sebuah fungsi dimana fungsi tersebut dapat dipakai untuk menampilkan data yang
memiliki kesamaan seperti join yang telah kita bahas sebelumnya, JUGA menampilkan data yang tidak
memiliki kesamaan
Sebelum memulai kita asumsikan Tabel Employees berada Disebelah kiri Dan tabel Departments berada
disebelah kanan. Jika kita melakukan LEFT OUTER JOIN terhadap kedua tabel tersebut, maka kita akan
mendapatkan semua data di tabel employees yang sama dan tidak sama dengan di tabel departments.
jadi ibaratnya kita menampilkan data Employees yang tidak dipakai di Departments
contoh :
contoh :
Full Outer Join merupakan gabungan dari LEFT OUTER JOIN dan RIGHT OUTER JOIN
contoh :
Cross Join disebut juga dengan CARTESIAN PRODUCT yaitu perkalian dari 2 buah tabel
contoh :
Jika tabel A CROSS JOIN tabel B menjadi : {aF, aG, aH, aI, bF, bG, bH, bI, cF, cG, cH, cI, dF, dG, dH,
dI}
query nya :
SELECT last_name, department_name FROM employees
CROSS JOIN departments
1. Menampilkan detail pekerjaan yang gaji minimumnya lebih dari 10.000.
2. Menampilkan nama depan dan tanggal bergabung dari karyawan yang bergabung antara
tahun 2002 dan 2005.
3. Menampilkan nama depan dan tanggal bergabung dari karyawan yang merupakan
Programmer IT atau Sales Man.
6. Menampilkan nama depan, gaji, persen komisi, dan tanggal perekrutan untuk karyawan
dengan gaji kurang dari 10.000.
7. Menampilkan Judul Pekerjaan, selisih antara gaji minimum dan maksimum untuk pekerjaan
dengan gaji maksimum dalam kisaran 10.000 hingga 20.000.
10. Tampilkan karyawan di mana nama depan atau nama belakang dimulai dengan S.
12. Menampilkan detail karyawan di mana persentase komisinya nol dan gaji dalam kisaran
5.000 hingga 10.000 dan departemen adalah 30.
16. Tampilkan nama depan dan nama belakang setelah mengubah huruf pertama dari setiap
nama menjadi huruf besar dan sisanya menjadi huruf kecil.
18. Menampilkan panjang nama depan karyawan yang nama belakangnya mengandung
karakter 'b' setelah jabatan ke-3.
19. Tampilkan nama depan dalam huruf besar dan alamat email dalam huruf kecil untuk
karyawan di mana nama depan dan alamat emailnya sama terlepas dari kasusnya.
21. Menampilkan jumlah hari antara tanggal sistem dan 1 Januari 2011.
22. Tampilkan berapa banyak karyawan yang bergabung setiap bulan dalam tahun ini.
23. Menampilkan ID manajer dan jumlah karyawan yang dikelola oleh manajer.
25. Menampilkan jumlah karyawan yang bergabung setelah tanggal 15 setiap bulan.
26. Tampilkan ID negara dan jumlah kota yang kita miliki di negara tersebut.
27. Menampilkan gaji rata-rata karyawan di setiap departemen yang memiliki persentase
komisi.
28. Menampilkan ID pekerjaan, jumlah karyawan, jumlah gaji, dan perbedaan antara gaji
tertinggi dan gaji terendah karyawan pekerjaan tersebut.
29. Menampilkan ID pekerjaan untuk pekerjaan dengan gaji rata-rata lebih dari 10.000.
31. Menampilkan departemen di mana lebih dari lima karyawan memiliki persentase komisi.
32. Menampilkan ID karyawan untuk karyawan yang melakukan lebih dari satu pekerjaan di
masa lalu.
33. Menampilkan ID pekerjaan dari pekerjaan yang dilakukan oleh lebih dari 3 karyawan selama
lebih dari 100 hari.
35. Menampilkan departemen di mana manajer mana pun mengelola lebih dari 5 karyawan.
36. Ubah gaji karyawan 115 menjadi 8000 jika gaji yang ada kurang dari 6000.
37. Masukkan karyawan baru ke dalam karyawan dengan semua detail yang diperlukan.
40. Masukkan baris ke dalam tabel departemen dengan ID manajer 120 dan ID lokasi di setiap
ID lokasi untuk kota Tokyo.
42. Tampilkan judul pekerjaan, ID karyawan, jumlah hari antara tanggal berakhir dan tanggal
mulai untuk semua pekerjaan di departemen 30 dari riwayat pekerjaan.
46. Menampilkan judul pekerjaan, nama departemen, nama belakang karyawan, tanggal mulai
untuk semua pekerjaan dari tahun 2000 hingga 2005.
48. Menampilkan jabatan, nama karyawan, dan selisih antara gaji maksimum untuk pekerjaan
tersebut dan gaji karyawan tersebut.
49. Menampilkan nama belakang, jabatan karyawan yang memiliki persentase komisi dan
termasuk dalam departemen 30.
50. Menampilkan detail pekerjaan yang telah dilakukan oleh setiap karyawan yang saat ini
mendapatkan gaji lebih dari 15.000.
51. Menampilkan nama departemen, nama manajer, dan gaji manajer untuk semua manajer
yang memiliki pengalaman lebih dari 5 tahun.
52. Tampilkan nama karyawan jika karyawan tersebut bergabung sebelum manajernya.
53. Tampilkan nama karyawan, jabatan untuk pekerjaan yang dilakukan karyawan di masa lalu
di mana pekerjaan itu dilakukan kurang dari enam bulan.
55. Tampilkan nama departemen, gaji rata-rata dan jumlah karyawan dengan komisi dalam
departemen.
56. Menampilkan bulan di mana lebih dari 5 karyawan bergabung di departemen mana pun
yang berlokasi di Sydney.
57. Tampilkan rincian departemen yang gaji maksimumnya lebih dari 10.000.
60. Tampilkan karyawan yang tidak melakukan pekerjaan apa pun di masa lalu.
61. Menampilkan jabatan dan gaji rata-rata untuk karyawan yang melakukan pekerjaan di masa
lalu.
62. Tampilkan nama negara, kota, dan jumlah departemen di mana departemen memiliki lebih
dari 5 karyawan.
64. Tampilkan nama karyawan, jabatan, tanggal mulai, dan tanggal akhir pekerjaan sebelumnya
dari semua karyawan dengan persentase komisi nol.
65. Tampilkan departemen di mana tidak ada karyawan yang bergabung dalam dua tahun
terakhir.
66. Tampilkan rincian departemen yang gaji maksimalnya lebih dari 10.000 untuk karyawan
yang melakukan pekerjaan di masa lalu.
67. Menampilkan detail pekerjaan saat ini untuk karyawan yang bekerja sebagai Pemrogram IT
di masa lalu.