Menu
Coddy logo textTech

Simplify queries, WITH keyword

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 49 / 72.

Sorgular, çok sayıda iç sorgu eklenerek çok karmaşıklaşabilir. Örneğin, birçok alt sorgusu olan bir sorgu şöyledir:

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
	)
)

İşlemi kolaylaştırmak için WITH query_name AS (...) anahtar kelimesini kullanabiliriz. Bir sorguyu bir isimle kaydetmemize ve istediğimiz her yerde kullanmamıza olanak tanır:

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)

Burada query1'i query2 içinde ve ana sorguda yeniden kullandık.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>devices_specs</strong>: <strong>device_id</strong>, <strong>width</strong>, <strong>height</strong>, <strong>num_features</strong>, <strong>opinion</strong>
  • <strong>devices_score</strong>: <strong>device_id</strong>, <strong>score</strong>

şunları yapan bir sorgu yazın:

  1. İlk olarak "large devices" (width değeri 200'den büyük olan cihazlar) tanımlar
  2. Ardından bu büyük cihazlar için ortalama puanı hesaplar. Bu sütunu average_score olarak adlandırın

Bu problemi çözmek için WITH ifadesini kullanın.

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler