Torna all'elenco degli articoli Articoli
Tempo di lettura: 8 minuti

Come leggere le query SQL di altre persone senza perdersi

Aprire l'SQL di qualcun altro può creare rapidamente confusione. Basta dare un'occhiata ai JOIN, agli alias e ai filtri per perdersi. Ecco come scomporre qualsiasi query passo dopo passo e darle un senso.

Leggere il proprio SQL è una cosa. Leggere la query di 200 righe di qualcun altro che alimenta un dashboard chiave è tutta un'altra cosa.

Questo articolo vi mostrerà come affrontare passo dopo passo l'SQL di altre persone, in modo da poter capire cosa fa, individuare i problemi e sentirvi sicuri nell'apportare modifiche. È scritto per principianti e analisti junior che conoscono già le basi ma si sentono ancora sopraffatti dalle query del "mondo reale".

Se sei appena agli inizi e hai bisogno di una base solida, è molto utile seguire prima un percorso strutturato, come il corso SQL per principianti di e il percorso SQL dalla A alla Z . Ti forniscono il vocabolario; questo articolo ti mostra come "leggere frasi lunghe" scritte da altri.

Perché leggere l'SQL scritto da altri sembra così difficile

Una query SQL lunga può sembrare peggiore del codice in altri linguaggi, perché:

  • Ognuno usa abitudini di formattazione e denominazione diverse.
  • Alcuni codici sono scritti da persone, altri da strumenti che generano SQL.
  • La query spesso si trova all'interno di un report, di un dashboard o di un processo ETL che non conosci ancora completamente.
  • Non è possibile vedere il modello di dati in un unico posto; è necessario dedurlo dai nomi delle tabelle e delle colonne.

La buona notizia è che esiste un modo ripetibile per "decodificare" tali query. Non è necessaria una matematica avanzata, basta un approccio attento e graduale.

Passaggio 1: iniziare dall'obiettivo, non dalla sintassi

Prima di esaminare le parole chiave, poniti una semplice domanda: a cosa cerca di rispondere questa query?

Spesso è possibile indovinarlo dal contesto:

  • Il nome della scheda del report o del dashboard.
  • Il nome del file o della vista (ad esempio: daily_revenue_summary, churn_risk_scores).
  • Il luogo in cui viene utilizzata la query (report settimanale di marketing, riconciliazione finanziaria, analisi dei prodotti, ecc.

Se non lo sai, chiedi a un collega o controlla la documentazione. Leggere una query senza conoscere la domanda che sta dietro è come leggere la soluzione di un puzzle senza conoscere il puzzle.

Una volta formulata un'ipotesi ("Probabilmente calcola le entrate per canale al giorno"), è possibile verificare in un secondo momento se la lettura della query corrisponde a tale ipotesi.

Passaggio 2: pulisci la query in modo da poter vedere la sua forma

Un layout disordinato rende qualsiasi query più difficile da comprendere. Non è necessario essere esperti nella formattazione manuale per migliorare questo aspetto.

Lavora su una copia della query (in modo da non danneggiare il codice di produzione) ed esegui una o più delle seguenti operazioni:

  • Utilizza l'opzione "Formato SQL" del tuo editor, se presente.
  • Incolla la query in un formattatore SQL online.
  • Aggiungi tu stesso delle interruzioni di riga di base:
  • Metti ogni parola chiave principale su una riga separata: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY.
  • Metti ogni colonna selezionata su una riga separata.
  • Inserisci ciascuna JOIN su una nuova riga.

Dopo aver fatto questo, dovresti essere in grado di vedere i blocchi:

  • Uno esterno SELECT
  • A FROM con diversi JOINs
  • WHERE, GROUP BY, HAVING, ORDER BY sezioni

La separazione visiva è fondamentale. MoltiLearnSQL.it esercizi in Nozioni di base su SQL e nei corsi pratici successivi allenano implicitamente questo occhio per la struttura, esponendoti a query ben formattate.

Fase 3: Ricostruisci il modello di dati nella tua mente

La maggior parte della confusione deriva dal non sapere cosa significano le tabelle e le colonne. Dedica del tempo a questo aspetto: ne varrà la pena in seguito.

3.1. Consultare le definizioni delle tabelle e delle colonne

Utilizza tutti gli strumenti a tua disposizione:

  • Diagrammi di database (se il tuo team li utilizza).
  • Viste di sistema (ad esempio, information_schema).
  • comandi "Descrivi tabella" (DESCRIBE, SHOW COLUMNS, ecc.).
  • Documentazione interna o un catalogo dati, se ne hai uno.

Per ogni tabella chiave nella query, rispondi:

  • Cosa rappresenta una riga? (un cliente, un ordine, un evento, una versione di prodotto, ecc.)
  • Quali colonne sono identificatori (chiavi primarie, chiavi esterne, chiavi aziendali come email, SKU, ecc.)?
  • Quali colonne sono metriche o attributi (amount, status, created_at, country, ecc.)?

3.2. Disegna un diagramma di join veloce

Prendete un foglio di carta o una lavagna bianca e disegnate:

  • Una casella per ogni tabella (o CTE) a cui si fa riferimento nella query.
  • L'alias della tabella tra parentesi accanto al nome della tabella (ad esempio: customers (c)).
  • Linee tra i riquadri che mostrano le JOIN condizioni.

Quindi etichettare ogni riga con le colonne utilizzate per il join, ad esempio: c.customer_id = o.customer_id.

Questo diagramma rende molto più facile rispondere alla domanda:

  • Qual è la tabella "principale"?
  • Quali tabelle aggiungono solo attributi extra?
  • Dove possono comparire i duplicati?

Passaggio 4: Leggi la query in ordine logico

L'SQL è scritto dall'alto verso il basso, ma nella tua mente non funziona in questo modo. Un ordine semplice che funziona per la maggior parte delle query è:

  1. FROM e JOIN
  2. WHERE
  3. GROUP BY e HAVING
  4. SELECT elenco (comprese espressioni e funzioni finestra)
  5. ORDER BY, LIMIT / TOP / OFFSET

Per una query con sottoquery:

  • Inizia con la sottoquery più interna.
  • Trattare ogni sottoquery come "un passo" in una pipeline.
  • Fornisci una breve descrizione in inglese semplice per ogni fase.

Non è ancora necessario riscrivere l'SQL. Basta costruire una narrazione: "Per prima cosa selezioniamo i clienti attivi, poi uniamo i loro ordini, quindi aggreghiamo per canale e giorno".

Questo è esattamente il tipo di ragionamento in più passaggi che si pratica nei corsi più LearnSQL.itavanzati di , come il corso sulle sottoquery.

Passaggio 5: presta attenzione a nomi, alias e commenti

Gli alias criptici sono una fonte comune di confusione. Nella tua copia provvisoria della query, sei libero di rinominarli per tua comodità.

Ad esempio, cambia:

FROM c AS t1
 JOIN o AS t2 ON t1.id = t2.customer_id

in qualcosa del tipo:

FROM customers AS c
 JOIN orders AS o ON c.id = o.customer_id

Allo stesso modo, nella SELECT elenco:

  • Cerca di allineare le espressioni e i loro alias.
  • Riscrivi gli alias poco chiari nei tuoi appunti:
  • total_amount_30d invece di t_amt
  • first_paid_date invece di d1

Se ci sono commenti, leggeteli attentamente. Potrebbero spiegare:

  • Perché esiste uno strano filtro.
  • Perché viene utilizzato un filtro insolito JOIN .
  • Perché una parte di logica è stata mantenuta per garantire la retrocompatibilità.

Se non ci sono commenti, scrivine uno tu, anche se è solo per te. Un semplice commento come:

-- Calculate revenue per customer per month, excluding internal test accounts

ti aiuterà e aiuterà i futuri lettori.

Passaggio 6: Chiedi aiuto con saggezza (incluso ChatGPT)

A volte capita di rimanere bloccati, anche dopo aver seguito tutti questi passaggi. È normale.

Opzioni:

  • Chiedi a un collega che ha scritto o gestisce la query.
  • Chiedi a un analista senior o a un ingegnere dei dati di verificare la tua comprensione.

Utilizza strumenti come ChatGPT per spiegare parti della query, a condizioni rigorose:

  • Non incollare dati riservati, chiavi API o nomi di clienti.
  • Rimuovi o rendi anonimi i nomi delle tabelle e delle colonne che rivelano informazioni sensibili.
  • Incolla solo la struttura per cui hai bisogno di aiuto (ad esempio, una specifica CTE, non l'intera pipeline).

Poni domande mirate:

  • "Cosa fa questa funzione finestra?"
  • "Quali righe sopravvivranno a questo join e filtro?"
  • "La logica GROUP BY è coerente con l'elenco SELECT?"

Considera l'IA come un altro strumento utile nel tuo arsenale, simile a un formattatore o a un visualizzatore di query. Dovrebbe supportare il tuo ragionamento, non sostituirlo.

Come mettere in pratica questa abilità in modo mirato

Leggere il codice SQL di altre persone è un'abilità che puoi esercitare, non solo qualcosa che ti capita al lavoro.

Alcune idee:

  • Prendete le vecchie query dalla cartella dei report del vostro team e sottoponetele a "reverse engineering":
    • Qual era la domanda aziendale?
    • Quali tabelle sono coinvolte?
    • Come descriveresti la query in tre righe?

Nel tuo lavoro:

  • Lascia commenti migliori di quelli che hai ereditato.
  • Usa alias chiari e nomi significativi.
  • Formatta le tue query in modo coerente.

Su LearnSQL.it:

  • Segui il percorso SQL dalla A alla Z per vedere query più complesse ma ben strutturate.
  • Utilizza SQL avanzato gli "esercizi di lettura": non limitarti a scrivere le risposte, ma leggi e spiega anche le soluzioni modello.

Più query vedi, meno ti spaventerà la prossima. Inizierai a riconoscere gli schemi e a dire: "Ah, è proprio come quel rapporto sulle entrate, ma con una dimensione in più e un filtro leggermente diverso".

Considerazioni finali

Non è necessario essere un ingegnere dati senior per comprendere le lunghe query SQL scritte da altri. Basta avere un metodo.

Se desideri un luogo in cui mettere in pratica queste competenze e acquisire una reale sicurezza con SQL, esplora il pacchetto Completo per sempre SQL di LearnSQL.it. Ti offre accesso illimitato a tutti i corsi, dalle nozioni di base su SQL alle esercitazioni avanzate, in modo da poter rafforzare le tue conoscenze fondamentali, apprendere tecniche più approfondite e affrontare con facilità query complesse.