Una guida passo passo per leggere e comprendere le query SQL - KDnuggets

Una guida passo passo per leggere e comprendere le query SQL – KDnuggets

Nodo di origine: 3091384

Una guida passo passo per leggere e comprendere le query SQL
Immagine di Freepik
 

SQL, o Standard Query Language, è un linguaggio di programmazione per la gestione e la manipolazione dei dati all'interno di un sistema di gestione di database relazionali (RDBMS). È un linguaggio standard utilizzato in molte aziende per aiutare le aziende ad accedere ai dati senza problemi. Poiché è ampiamente utilizzato, l'impiego di solito cita SQL come una delle competenze necessarie. Ecco perché è essenziale conoscere SQL.

Uno dei problemi più comuni per le persone che imparano SQL è comprendere le query, soprattutto quando un'altra persona le scrive. Lavoreremo come una squadra nelle aziende e spesso avremo bisogno di leggere e comprendere le loro query SQL. Quindi, dobbiamo esercitarci a decostruire le query SQL e comprenderle.

Questo articolo illustra un processo passo passo per leggere e comprendere le query SQL. Come lo facciamo? Entriamo nel merito.

La prima cosa che dobbiamo fare quando incontriamo una query SQL è comprendere l'intento generale delle query SQL. L'intenzione generale non significa che conosciamo interamente la struttura della query; è più una questione di flussi complessivi.

Dovremmo comprendere le query SQL standard per comprendere la query SQL generale. La maggior parte delle query SQL iniziano con SELEZIONA clausola e seguire con il DA clausola. Proseguendo da lì, le query sono spesso seguite da ISCRIVITI, DOVE, RAGGRUPPA PER, ORDINATO DA, ed VISTA clausole.

Le clausole precedenti sono standard nelle query SQL che dobbiamo comprendere. Per ciascuna clausola, le loro funzioni sono:

  1. SELEZIONA: quali colonne devono essere prese dalla tabella
  2. DA: da quale tabella provengono i dati
  3. ISCRIVITI: combina le tabelle con l'identificatore specificato
  4. DOVE: filtro dei dati in base alla condizione
  5. RAGGRUPPA PER: organizza i dati in base al valore della colonna e consente l'esecuzione della funzione di aggregazione.
  6. ORDINATO DA: organizza l'ordine dei risultati dei dati in base alla colonna specifica
  7. VISTA: la condizione del filtro per la funzione di aggregazione con cui non è possibile specificare DOVE

Queste sono le clausole standard e ciò che dovresti trovare all'inizio quando comprendi la struttura generale della query SQL. Usiamo il codice di esempio per saperne di più.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

Quando guardi la query sopra, prova a identificare le clausole standard. La clausola fornirebbe una comprensione di quali dati vengono selezionati (SELEZIONA), da dove viene (DA ed ISCRIVITI) e la condizione (DOVE, RAGGRUPPA PER, ORDINATO DAe VISTA). 

Ad esempio, leggere la query sopra ti fornirebbe la comprensione di quanto segue:

  1. proviamo a ottenere tre diversi tipi di dati: il Nome da una tabella denominata clienti, il Prodotto da una tabella denominata acquisti e l'aggregazione di colonne prezzo che non identificano da dove proviene la tabella e con l'alias total_price (Informazioni dalla clausola SELEZIONA). 
  1. I dati complessivi proverrebbero dalle tabelle degli acquisti e dei clienti che si uniscono utilizzando la colonna cust_id degli acquisti e la colonna id della tabella del cliente (Informazioni dalla clausola DA) ed ISCRIVITI). 
  1. Selezioneremo solo i dati con il valore della colonna categoria nella tabella degli acquisti come "cucina" (Informazioni dalla clausola DOVE), 
  1. gruppo per la funzione di aggregazione con il nome e la colonna del prodotto provenienti dalla rispettiva tabella (Informazioni dalla clausola RAGGRUPPA PER), 
  1. filtrato anche dalla somma dei risultati della funzione di aggregazione dove total_price è maggiore di 10000 (informazioni dalla clausola VISTA), E 
  1. ordinare i dati in modo decrescente in base a total_price (informazioni dalla clausola ORDINATO DA).

Questa è la struttura generale della query SQL che devi conoscere e identificare. Da lì, possiamo esplorare ulteriormente la query avanzata. Andiamo avanti con il passaggio successivo.

Ci sarebbe un momento in cui incontreresti una query complessa in cui ce ne sono così tante SELEZIONA esistono clausole nella stessa query. In questo caso, dovremmo comprendere il risultato finale della query o il (primo) risultato finale SELEZIONA vedi nella query. La chiave è sapere quale vuole essere l'output della query.

Usiamo un codice più complesso come quello seguente.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

La query sembra più complessa e più lunga ora, ma il focus iniziale dovrebbe essere quello finale SELEZIONARE, che sembra cercare di produrre la spesa totale del cliente e la cronologia degli acquisti. Prova a valutare quale vuole essere il risultato finale e scomponilo da lì.

Abbiamo l'intuizione del risultato che dovrebbe provenire dalle query. La prossima parte è vedere quali saranno le condizioni per la finale SELEZIONA Sono. La clausola delle condizioni, inclusa DOVE, RAGGRUPPA PER, ORDINATO DAe VISTA erano quelli che controllavano il risultato complessivo dei dati. 

Prova a leggere e comprendere le condizioni della nostra query e comprenderemo meglio il risultato finale della nostra query. Ad esempio, nella nostra precedente query SQL, la condizione finale è solo the ORDINATO DA. Ciò significa che il risultato finale verrebbe ordinato in base al prezzo totale del prodotto in ordine decrescente. 

Conoscere le condizioni finali ti aiuterebbe a comprendere una parte significativa della query e l'intenzione generale della query.

Infine, bisogna capire da dove provengono i dati. Dopo aver conosciuto i dati da selezionare e le condizioni per ottenerli, dobbiamo capirne la fonte. Il finale ISCRIVITI La clausola ci darebbe una comprensione di come interagiscono le tabelle e del flusso di dati.

Ad esempio, la query complessa precedente mostra che abbiamo eseguito Join due volte. Significa che abbiamo utilizzato almeno tre fonti di dati per il risultato finale. Queste informazioni saranno necessarie nei passaggi successivi per comprendere ulteriormente come arriva ciascuna origine dati, soprattutto quando l'origine dati proviene dalla sottoquery.

Dopo aver capito come deve essere il risultato finale e da dove deriva, bisogna guardare più da vicino i dettagli. Da qui, torneremo indietro in ciascuna sottoquery e capiremo perché sono strutturate in questo modo.

Tuttavia, non cerchiamo di considerarli secondo una struttura top-down. Dovremmo invece provare a guardare le sottoquery più vicine al risultato finale e passare a quella più lontana dal risultato finale. Dall'esempio di codice sopra, dovremmo provare prima a capire questo codice:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

Quindi passiamo al codice più lontano, ovvero questo:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

Possiamo rintracciare chiaramente il processo di pensiero dell'autore suddividendo ciascuna sottoquery da quella più vicina al risultato a quella più lontana. 

Prova a ripetere la procedura sopra se hai bisogno di aiuto per comprendere ciascuna sottoquery. Con un po' di pratica, avrai una migliore esperienza nella lettura e nella comprensione della query.

Leggere e comprendere le query SQL è un'abilità che tutti dovrebbero avere nell'era moderna, poiché ogni azienda se ne occupa. Utilizzando la seguente guida passo passo, avrai più tempo per comprendere le complesse query SQL. I passaggi includono:

  1. Comprendere la struttura generale delle query SQL
  2. Comprendere la selezione finale
  3. Comprendere la clausola sulle condizioni finali
  4. Comprendere l'unione finale
  5. Lettura in ordine inverso e ripetizione

 
 

Cornellio Yudha Wijaya è un assistente manager di data science e scrittore di dati. Mentre lavora a tempo pieno presso Allianz Indonesia, ama condividere suggerimenti su Python e dati tramite social media e mezzi di scrittura.

Timestamp:

Di più da KDnuggets