Menu
Coddy logo textTech

Semplificare le query con la parola chiave WITH

Lezione 2 di 13 del corso SQL avanzato di Coddy.

Le query possono diventare troppo complicate aggiungendo molte query interne. Per esempio, ecco una query che contiene molte sottoquery:

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

Per semplificare, possiamo usare la parola chiave WITH query_name AS (...). Ci permette di salvare una query con un nome e di usarla dove vogliamo:

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 query2 AND col4 IN query1

Qui abbiamo riutilizzato query1 in query2 e nella query principale.

challenge icon

Sfida

Facile

La qualità di un dispositivo si misura con (width/height)*num_features.

Vogliamo trovare tutti i dispositivi sottovalutati. Recupera tutti i dispositivi in cui l'opinion del dispositivo è superiore alla qualità media e lo score del dispositivo è inferiore alla qualità media.

Per risolvere il problema, usa la clausola WITH per creare una sottoquery che calcoli la qualità media e riutilizzala nella query principale.

Provalo tu

Tutte le lezioni di SQL avanzato

Esercitati da solo: Compilatore Python online