Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Tabel dan kolom yang tersedia:

  • devices_specs: device_id, width, height, num_features, opinion
  • devices_score: device_id, score

tulis query yang:

  1. Pertama, mengidentifikasi "large devices" (perangkat dengan width lebih besar dari 200)
  2. 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 (____);
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground SQL