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 query1Qui abbiamo riutilizzato query1 in query2 e nella query principale.
Sfida
FacileLa 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
4Riepilogo
Sfida finale #13Funzioni finestra, parte 2
Funzioni RANK e DENSE_RANKFunzione NTILEFunzioni di aggregazioneCriterio ROWS e RANGEEsercitati da solo: Compilatore Python online