00:00Sering gak sih kita memfilter data tapi syarat filternya itu berdasarkan nilai yang ya harus kita hitung dulu.
00:05Nah disitulah letak kekuatan subquery SQL.
00:08Ini adalah teknik buat menyarankan satu query di dalam query lain yang memungkinkan kita untuk mengajukan pertanyaan yang jauh lebih
00:13kompleks dan mendalam ke data kita.
00:15Yuk kita bedah bareng-bareng cara kerjanya.
00:17Nah ini dia, skenario klasik banget.
00:19Anda perlu mencari semua karyawan yang gajinya di atas rata-rata.
00:23Masalahnya, SQL itu gak ngebolehin kita pakai fungsi FPG langsung di dalam klausel where.
00:28Jadi gimana dong caranya kita filter data berdasarkan nilai yang kita sendiri belum tahu?
00:33Inilah masalah yang emang dirancang untuk dipecahkan oleh subquery.
00:37Oke, jadi di pembahasan kali ini kita akan bahas apa itu subquery,
00:40lalu kita lihat gimana cara pakainya buat pemfilteran yang lebih cerdas dan juga pembuatan kolom dinamis.
00:45Kita juga akan singgung sedikit soal tabel virtual dan diakhiri dengan rangkuman singkat tentang tiga tempat utama di mana kita
00:51bisa menggunakan subquery.
00:53Oke, pertama-tama, apa sih sebenarnya query di dalam query itu?
00:56Intinya, ya persis seperti namanya.
00:58Jangan biarkan istilahnya bikin pusing, ah?
01:00Konsep dasarnya sebenarnya gampang banget kok.
01:03Gampangnya gini, subquery itu adalah sebuah statement select yang lengkap yang kita taruh di dalam tanda kurung,
01:08terus kita sarangin di dalam query lain yang lebih besar.
01:11Aturan paling penting yang harus diingat adalah query yang di dalam itu selalu dieksekusi duluan.
01:16Coba deh bayangin boneka Matryoshka dari Rusia.
01:19Kita kan buka boneka paling luar buat nemuin boneka lain di dalamnya.
01:22Nah, SQL itu kerjanya mirip banget.
01:25Query yang di luar itu nunggu dulu, ngejalanin query yang di dalam, nangkep hasilnya, bisa itu satu nilai, satu baris,
01:31atau bahkan satu tabel utuh,
01:33baru deh hasil itu dipakai buat nyelesain tugasnya si query luar.
01:36Sekarang, yuk kita lihat penggunaan subquery yang paling umum dan mungkin juga yang paling berguna,
01:41yaitu membuat filter yang jauh lebih pinter dan dinamis menggunakan klausa where.
01:45Nah, ini sering banget jadi batu sandungan. Kita tuh nggak bisa langsung nulis where salary greater than AVG salary.
01:51Kenapa? Karena secara logika, SQL memproses klausa where sebelum dia menghitung fungsi agregat.
01:56Itu loh fungsi yang ngitung sekumpulan baris kayak AVG atau max.
01:59Where itu lihat data baris per baris, sedangkan AVG perlu lihat semua baris sekaligus.
02:04Di sinilah subquery datang menyelamatkan kita.
02:06Dan ini dia solusinya. Keren banget.
02:09Coba deh lihat bagian yang di dalam kurung.
02:11Select average salary from employees, itu jalan duluan.
02:14SQL ngitung rata-rata gajinya, katakanlah hasilnya Rp50.000.
02:18Nah, setelah dapat angka itu, hasilnya disubstitusi ke query luar.
02:21Jadi seolah-olah query-nya menjadi where salary kurang dari Rp50.000.
02:25Cerdas kan?
02:26Dan ini dia hasilnya kalau kita jalanin.
02:28Subquery pertama-tama menghitung dulu rata-rata umur dari keseluruhan tabel,
02:32terus dan hanya setelah itu, query yang di luar berjalan,
02:35menggunakan satu angka rata-rata tadi untuk memfilter data set kita,
02:38dan ngasih kita cuma karyawan yang umurnya di atas ambang batas dinamis itu.
02:42Anda nggak perlu tahu rata-ratanya berapa.
02:44Biar query-nya yang cari tahu buat Anda.
02:46Oke, kita pindah ke penggunaan berikutnya.
02:48Subquery itu nggak cuma buat ngefilter di where lho,
02:51Anda juga bisa menempatkannya langsung di daftar select
02:53untuk membuat kolom-kolom yang dihitung secara dinamis.
02:55Coba perhatikan sintaksnya.
02:57Tepat di dalam daftar select, kita punya dua subquery yang independen.
03:00Satu buat dapetin min age, dan satunya lagi buat dapetin max age.
03:04Karena masing-masing cuma menghasilkan satu nilai,
03:07SQL akan ngejalanin tiap subquery itu sekali.
03:09Terus nambahin nilai hasilnya itu sebagai kolom baru ke setiap baris di hasil akhir kita.
03:15Dan lihat deh hasilnya, keren banget.
03:17Setiap baris data sekarang nggak cuma nunjukin umur satu orang itu aja,
03:20tapi juga nunjukin umur termuda dan tertua di seluruh perusahaan.
03:24Ini bener-bener pengubah permainan untuk analisis.
03:26Kita jadi langsung dapat konteks.
03:27Kita bisa lihat data yang anomali, bandingin individu dengan keseluruhan,
03:31semuanya dalam satu set hasil yang rapi tanpa perlu menjalankan query terpisah.
03:35Penggunaan besar ketiga, dan yang satu ini bener-bener membuka banyak sekali kemungkinan,
03:39adalah menempatkan subquery di dalam klausur from.
03:42Ini pada dasarnya memungkinkan Anda membuat tabel sementara atau tabel virtual saat itu juga.
03:47Perhatiin baik-baik ya, query yang di luar select from itu bukan mengambil data dari tabel asli di database,
03:53tapi ia mengambil dari hasil subquery kita.
03:55Subquery itu jalan duluan, membuat semacam tabel sementara di memori,
03:59yang kita kasih nama alias employee underscore biodata,
04:02dan barulah query luar bisa memfilter, menggabungkan, atau memilih dari tabel virtual itu.
04:06Ini sangat berguna untuk menyederhanakan join yang rumit,
04:09atau melakukan agregasi bertingkat dalam satu query.
04:11Oke, kita udah ngebahas tiga cara utama buat menggunakan subquery.
04:15Yuk kita rangkum sebentar biar konsepnya bener-bener nempel di kepala.
04:19Jadi, ingat aja tiga lokasi kunci ini.
04:21Pertama, di Clouds Aware, untuk pemfilteran canggih berdasarkan nilai agregat.
04:24Kedua, didaftar select, untuk menambahkan kolom kontekstual di setiap baris.
04:28Dan yang ketiga, di Clouds Up From, untuk membuat kumpulan data khusus Anda sendiri untuk diquery lebih lanjut.
04:34Masing-masing sangat powerful dengan caranya sendiri.
04:36Jadi, saya akan tinggalin Anda dengan pemikiran ini.
04:39Subquery itu intinya adalah melampaui pertanyaan-pertanyaan sederhana.
04:42Mereka memungkinkan kita untuk menggali lebih dalam,
04:45membandingkan antar kelompok data, dan mengungkap wawasan yang lebih detail.
04:48Coba deh pikirkan tentang data yang Anda kerjakan setiap hari.
04:51Pertanyaan apa yang tadinya kelihatan mustahil buat dijawab,
04:53tapi sekarang mungkin sudah bisa Anda pecahkan?
04:55Selamat mencoba!
Komentar