SQL semplificato: creazione di query modulari e comprensibili con CTE - KDnuggets

SQL semplificato: creazione di query modulari e comprensibili con CTE – KDnuggets

Nodo di origine: 3084928

SQL semplificato: creazione di query modulari e comprensibili con CTE
Immagine dell'autore 
 

Nel mondo dei dati, SQL è ancora la lingua franca per interagire con i database. 

Ancora oggi è uno dei linguaggi più utilizzati per gestire i dati ed è ancora considerato un must per ogni buon professionista dei dati. 

Tuttavia, chiunque abbia lavorato con query SQL complesse sa che possono trasformarsi rapidamente in bestie ingombranti, difficili da leggere, gestire o riutilizzare. 

Ecco perché oggi non basta conoscere SQL, bisogna essere bravi a creare query. E questo è in realtà un tipo di arte. 

È qui che entrano in gioco le Common Table Expressions (CTE), trasformando l'arte della scrittura di query in un mestiere più strutturato e accessibile.

Scopriamo quindi insieme come codificare query leggibili e riutilizzabili.

Se ti stai chiedendo cos’è un CTE sei nell’articolo giusto. 

Una Common Table Expression (CTE) è un set di risultati temporaneo definito nell'ambito di esecuzione di una singola istruzione SQL. 

 

Sono tabelle temporali a cui è possibile fare riferimento più volte all'interno di una singola query e in genere vengono utilizzate per semplificare join e sottoquery complessi, con l'obiettivo finale di aumentare la leggibilità e l'organizzazione del codice SQL.

Quindi sono uno strumento potente per suddividere query complesse in parti più semplici.

Ecco perché dovresti prendere in considerazione l'utilizzo dei CTE:

  • modularità: Puoi scomporre la logica complessa in blocchi leggibili.
  • leggibilità: Semplifica la comprensione del flusso delle query SQL.
  • Riusabilità: È possibile fare riferimento alle CTE più volte in una singola query, evitando ripetizioni.

La magia inizia con la clausola WITH, che precede la query principale e definisce diverse tabelle temporali (CTE) con alias.

Pertanto, dobbiamo sempre iniziare la nostra query con il comando "WITH" per iniziare a definire i propri CTE. Utilizzando CTE, possiamo suddividere qualsiasi query SQL complessa in: 

– Piccole tabelle temporali che calcolano le variabili correlate. 

– Una tabella finale che prende solo le variabili che vogliamo come output.

Ed è proprio questo l'approccio MODULARE che vogliamo in ogni codice!

 

SQL semplificato: creazione di query modulari e comprensibili con CTE
Immagine dell'autore
 

Pertanto, l'utilizzo dei CTE nelle nostre query ci consente di:

– Esegui una tabella temporale UNA VOLTA e fai riferimento ad essa PIÙ volte.

– Migliorare la leggibilità e semplificare la logica complessa.

– Promuovere la riusabilità del codice e la progettazione modulare.

Per capirlo meglio, possiamo fare un esempio pratico degli annunci Airbnb a Barcellona. 

Immaginiamo di voler analizzare il rendimento degli annunci per quartiere e confrontarlo con il rendimento complessivo della città. Dovresti raccogliere informazioni su quartieri, singoli appartamenti, host e prezzi.

Per esemplificare ciò, utilizzeremo il file All'interno di Airbnb tabella di Barcellona, ​​che si presenta così: 

 

SQL semplificato: creazione di query modulari e comprensibili con CTE
 

Un approccio ingenuo potrebbe portarti a creare sottoquery nidificate che diventano rapidamente un incubo di manutenzione come quello seguente:

Codice per autore

Possiamo invece utilizzare i CTE per compartimentare la nostra query in sezioni logiche, ciascuna delle quali definisce un pezzo del puzzle.

  • Dati del quartiere: Crea un CTE per riepilogare i dati per quartiere.
  • Informazioni sull'appartamento e sull'host: Definisci CTE per i dettagli su appartamenti e host.
  • Metriche a livello cittadino: Un altro CTE per raccogliere statistiche a livello di città per il confronto.
  • Assemblea finale: Combina i CTE in un'istruzione SELECT finale per presentare i dati in modo coerente.

 

SQL semplificato: creazione di query modulari e comprensibili con CTE
Immagine dell'autore
 

E ci ritroveremmo con la seguente query:

Codice per autore

Utilizzando CTE, trasformiamo una singola query potenzialmente mostruosa in un insieme organizzato di moduli di dati. Questo approccio modulare rende il codice SQL più intuitivo e adattabile ai cambiamenti. 

Se emergono nuovi requisiti, puoi modificare o aggiungere CTE senza rivedere l'intera query.

Una volta stabiliti i CTE, puoi riutilizzarli per eseguire analisi comparative. Ad esempio, se desideri confrontare i dati del quartiere con i parametri a livello cittadino, puoi fare riferimento ai tuoi CTE in una serie di operazioni JOIN. 

Ciò non solo fa risparmiare tempo, ma mantiene anche efficiente il codice, poiché non dovrai ripetere la stessa query due volte!

I CTE testimoniano il principio secondo cui una piccola struttura fa molto nella programmazione. Adottando le CTE, puoi scrivere query SQL più chiare, più gestibili e riutilizzabili. 

Semplifica il processo di sviluppo delle query e semplifica la comunicazione ad altri della logica complessa di recupero dei dati.

Ricorda, la prossima volta che ti ritrovi a imbarcarti nella scrittura di un mostro di sottoquery nidificate multi-join, valuta la possibilità di scomporlo con CTE. 

Il tuo sé futuro e chiunque altro possa leggere il tuo codice ti ringrazieranno.
 
 

Giuseppe Ferrer è un ingegnere analitico di Barcellona. Laureato in ingegneria fisica, attualmente lavora nel campo della Data Science applicata alla mobilità umana. È un creatore di contenuti part-time focalizzato sulla scienza e la tecnologia dei dati. Puoi contattarlo su LinkedIn, Twitter or Medio.

Timestamp:

Di più da KDnuggets