Jenis dan Contoh Subquery SQL untuk Analisis Data Kamu
Syaukha Ahmad Risyad
•
17 June 2023
•
4231
Dalam perjalanan kamu menganalisis data menggunakan SQL, ada kalanya kamu menemukan kondisi yang mengharuskan kamu menggunakan subquery. Subquery adalah tools yang cukup powerful dalam kamu membuat query yang cukup kompleks. Meskipun begitu, mungkin kamu bertanya, “Apa itu subquery, dan seperti apa subquery itu?”
Pekerja-pekerja di bidang data, seperti data scientist dan data analyst, harus bisa mengambil informasi yang berguna dari suatu data. Meskipun penulisan query dasar cukup membantu, namun menguasai teknik menggunakan subquery akan semakin mempermudah pekerjaanmu di bidang data science. Subquery memungkinkan Sobat MinDi untuk break down masalah ke dalam bagian yang lebih kecil, sehingga semakin mempermudah pengambilan informasi dari data.
Oleh karena itu, di artikel ini MinDi mau memperkenalkan Sobat MinDi dengan apa itu subquery dalam SQL, beserta contoh-contoh subquery yang bisa kamu manfaatkan.
Apa itu Subquery?
Subquery adalah query yang ditumpuk pada query lain pada SQL. Dengan kata lain, kamu bisa menulis query baru di dalam query utama, dan dengan perintah dan klausa yang sama, seperti SELECT dan WHERE.
Subquery akan dieksekusi terlebih dahulu sebelum query utama, kemudian hasil keluaran dari subquery ini diteruskan ke query utama. Sehingga dapat dibilang bahwa query utama bersifat dependen terhadap subquery.
Terdapat beberapa jenis subquery yang umum digunakan pada SQL. Masing-masing jenis subquery ini memiliki fungsi yang berbeda-beda.
Scalar Subquery
Jenis subquery pertama dan yang paling umum dipakai adalah scalar subquery. Scalar subquery adalah subquery yang hasilnya memberikan satu nilai tunggal. Tepat satu baris dan tepat satu kolom.
Misalkan Sobat MinDi mempunyai tabel “Pegawai” yang berisi nama, posisi, gaji, dan departemen pegawai. Kamu ingin mencari nama pegawai dari yang memiliki gaji yang lebih tinggi dari gaji rata-rata.
Kamu dapat menulis query sebagai berikut.
SELECT nama
FROM Pegawai
WHERE gaji > (SELECT AVG(gaji) FROM Pegawai);
Pada query tersebut, (SELECT AVG(gaji) FROM Pegawai) adalah scalar subquery karena hanya memberikan nilai tunggal, misalkan ‘15000000’.
Scalar subquery biasa digunakan ketika kamu ingin membandingkan nilai atau mencari nilai maksimum atau minimum dari suatu tabel
Multiple Row Subquery
Multiple row subquery adalah jenis subquery yang memberikan lebih dari satu baris data. Data yang dipanggil oleh subquery ini bisa berupa satu kolom dengan beberapa baris, atau tabel dengan banyak baris dan banyak kolom.
Misalkan, menggunakan tabel “Pegawai” di atas, kamu juga memiliki tabel “Proyek” yang berisi nama proyek, project manager, dan departemen yang bertanggung jawab. Kamu ingin mencari nama-nama pegawai yang tidak masuk ke dalam departemen yang bekerja pada proyek tertentu.
Kamu dapat menulis query seperti berikut.
SELECT nama, departemen
FROM pegawai
WHERE departemen NOT IN (SELECT departemen FROM Proyek);
Subquery (SELECT departemen FROM Proyek) akan memberikan hasil berupa satu kolom penuh berisi nama-nama departemen dari tabel “Proyek”. Karena hasil tersebut lebih dar satu baris (row), maka subquery tersebut termasuk ke dalam jenis multiple row subquery.
Multiple row subquery biasa digunakan untuk membandingkan data atau nilai dari dua tabel.
Correlated Subquery
Correlated subquery adalah subquery yang perintahnya bergantung pada query utama.
Misalkan, menggunakan tabel yang sama seperti di atas, kamu ingin mencari tahu pegawai mana saja yang menjadi project manager beserta banyak proyek yang diembannya.
Kamu dapat menggunakan query berikut.
SELECT nama,
(SELECT COUNT (*) FROM Proyek WHERE Pegawai.nama = Proyek.project_manager) banyak_proyek
FROM Pegawai;
Di sini, informasi dari subquery (SELECT COUNT (*) FROM Proyek WHERE Pegawai.nama = Proyek.project_manager) bergantung pada informasi dari query utama. Ini yang disebut sebagai correlated subquery.
Nested Subquery
Nested subquery adalah subquery yang, di dalam perintahnya, terdapat subquery lain.
Misalkan, kembali menggunakan tabel yang sama, kamu ingin mencari nama pegawai yang berada di departemen yang project manager-nya bertugas sebagai manajer.
SELECT nama
FROM Pegawai
WHERE departemen IN (SELECT departemen FROM Proyek WHERE project_manager IN (SELECT * FROM Pegawai WHERE posisi = ‘Manajer’));
Dari query di atas, kita bisa melihat adanya subquery di dalam subquery. Keluaran dari subquery pertama bergantung pada keluaran dari subquery kedua, yaitu (SELECT * FROM Pegawai WHERE posisi = ‘Manager’). Inilah yang disebut sebagai nested subquery.
Jenis subquery ini memungkinkan kamu memanipulasi data di dalam subquery sebelum dibandingkan atau digunakan dalam query utama. Pada sistem database SQL, umumnya nested subquery tidak memiliki batasan banyak lapisan subquery yang bisa kamu tulis. Meskipun begitu, kamu tetap perlu memperhatikan keterbacaan dari query kamu, agar kamu ataupun tim kamu mudah memahami tujuan dari query yang kamu tulis.
Pada akhirnya, subquery adalah tools yang berguna untuk kamu menganalisis data menggunakan SQL. Dengan menguasai subquery, kamu bisa melakukan analisis data yang lebih kompleks dan memperoleh informasi yang lebih spesifik.
Kalau Sobat MinDi tertarik untuk menempuh karir di data science, Pemahaman SQL, termasuk subquery, tentulah menjadi keterampilan yang penting.
Untuk mempelajari SQL lebih lanjut, kamu bisa ikut bergabung dengan Bootcamp Data Science yang diadakan oleh Dibimbing.id, nih!
Selain SQL, kamu juga bisa belajar tools lain yang biasa digunakan professional, seperti Python dan Tableau. Sobat MinDi juga bakal bertemu dengan ahli-ahli yang sudah berpengalaman di bidang data science.
Ayo daftar sekarang dan mulai karir kamu di data science!
Tags