Sederhanakan query dengan kata kunci WITH
Termasuk bagian Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 49 dari 72.
Query bisa menjadi terlalu rumit jika ditambahkan banyak query di dalamnya. Sebagai contoh, berikut query yang memiliki banyak subquery:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)Agar lebih mudah, kita bisa menggunakan kata kunci WITH query_name AS (...). Kata kunci ini memungkinkan kita menyimpan query dengan nama dan menggunakannya di mana pun kita mau:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)Di sini kita menggunakan kembali query1 di query2 dan di query utama.
Tantangan
MudahTabel dan kolom yang tersedia:
devices_specs:device_id,width,height,num_features,opiniondevices_score:device_id,score
tulis query yang:
- Pertama, mengidentifikasi "large devices" (perangkat dengan
widthlebih besar dari 200) - Kemudian menghitung nilai rata-rata score untuk perangkat besar ini. Beri nama kolom ini
average_score
Gunakan klausa WITH untuk menyelesaikan masalah ini.
Coba sendiri
-- Langkah 1: beri nama set hasil sementara yang hanya berisi perangkat yang kamu inginkan
WITH large_devices AS (
SELECT ____
FROM devices_specs
WHERE ____
)
-- Langkah 2: gunakan kembali set hasil sementara itu dalam query utama
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Kata Kunci Lainnya
Kata kunci INKata kunci BETWEENKata kunci LIKEKata kunci ASRangkuman: Model Ponsel2Kondisi
Dasar KondisiKata Kunci ANDKata Kunci ORKata Kunci NOTMenggabungkan Beberapa KondisiTanda KurungNilai Boolean3Format Pengembalian Khusus
Nilai nullUrutkan Hasil Bagian 1Urutkan Hasil Bagian 2Ulasan: Perusahaan Keamanan SiberBatasi Jumlah RecordUlasan: Pabrik Kendaraan6Tantangan Pengantar
Ulasan: Pemilihan ParlemenUlasan: Polisi Menangkap Pelaku KejahatanUlasan: Wadah Minuman BarUlasan: Insinyur Membuat Kolom Baru9Beberapa Tabel
Join Dasar Bagian 1Join Dasar Bagian 2Ringkasan: JoinSelf joinRingkasan: Self joinUnionSederhanakan query dengan kata kunci WITHRingkasan: Query WITHRingkasan: Kontraktor PropertiLatihan sendiri: Playground SQL