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

Queste query SQL vi aiuteranno nell'analisi dei dati

Avete bisogno di semplificare le vostre attività quotidiane di analisi dei dati? Questo articolo spiega come possono essere utili le query SQL di base.

Se state pianificando una carriera aziendale o in qualsiasi campo che implichi il lavoro con i dati, vi sarete sicuramente imbattuti in SQL, o Structured Query Language. L'SQL è stato sviluppato per la prima volta negli anni '70 e continua a essere lo standard industriale per le interazioni con i database. Molti di voi potrebbero aver già deciso di imparare questo linguaggio, vista la sua potenza. O forse vi state chiedendo se valga la pena impararlo.

L'SQL è sicuramente una delle competenze più preziose per chi cerca lavoro. Per ruoli come l'analista di dati o l'ingegnere di dati, l'SQL è il pane quotidiano. In altre posizioni, potrebbe non sembrare così necessario. Tuttavia, sono fermamente convinto che imparare l'SQL vi dia un vantaggio nel lavorare con i dati che renderà più solide le vostre decisioni aziendali. Vi darà la possibilità di analizzare comodamente grandi volumi di dati e di presentare i risultati in modo sintetico a qualsiasi pubblico.

In questo articolo tratterò le query e i costrutti SQL di base che vi permetteranno di iniziare a lavorare con le vostre esigenze di analisi dei dati. Ma prima di entrare nel merito, vi illustrerò cos'è l'SQL e le sue applicazioni generali.

Che cos'è l'SQL?

SQL è un linguaggio standard per accedere e manipolare i database. In breve, vi aiuta a "parlare" con il vostro database.

È possibile utilizzarlo per recuperare le informazioni già memorizzate nel database, creare nuove tabelle e memorizzare o aggiornare i dati secondo le necessità. Sembra semplice, vero? Lo è. Ma è proprio qui che risiede la sua potenza: È semplice, ma produce risultati molto utili.

Leorganizzazioni che seguono un approccio incentrato sui dati per le loro decisioni aziendali prosperano. E se presentate le vostre idee utilizzando l'analisi dei dati, avrete molte più probabilità di ottenere il consenso dei vostri interlocutori. In effetti, ogni azienda ha bisogno dell'analisi dei dati, in una forma o nell'altra, per crescere.

L'SQL aiuta a rendere questo processo di analisi dei dati senza soluzione di continuità. Può essere utilizzato per innumerevoli applicazioni legate ai dati, indipendentemente dal settore - tecnologia, risorse umane, finanza, marketing, vendite - o dalle dimensioni dell'azienda. Ad esempio, SQL può aiutarvi a:

  • Analizzare i dati dei clienti e generare approfondimenti sul loro comportamento.
  • Analizzare i dati PnL per individuare i maggiori costi.
  • Eseguire analisi finanziarie generali.
  • Capire quali sono i reparti con i costi più elevati per le paghe/la forza lavoro.
  • Individuare le aree operative con il maggior numero di errori o inefficienze.
  • Identificare i venditori, i negozi, le sedi, le regioni, ecc. con le migliori prestazioni.
  • Analizzare i colli di bottiglia nel vostro sito web e altre attività legate ai dati.

Naturalmente, questi sono solo alcuni esempi. In realtà, l'elenco è quasi infinito. Se siete proprietari o manager di un'azienda, potreste anche volere che i vostri dipendenti imparino l'SQL o che incorporiate corsi di SQL nel vostro processo di onboarding. Come minimo, probabilmente vorrete imparare voi stessi l'SQL per poter prendere decisioni basate sui dati.

Ora che avete un'idea di cosa sia l'SQL e di come possa essere utilizzato, vediamo alcune query di base per iniziare a svolgere le vostre attività di analisi dei dati.

Costrutti e query SQL di base

Le clausole e le funzioni SQL sono molte di più di quelle che possiamo trattare in questo articolo, ma quelle che seguono sono alla base della maggior parte delle query SQL.

Inoltre, gli esempi citati sono costruiti su un set di dati limitato. In realtà, si lavorerà con migliaia di righe e molte tabelle. Non preoccupatevi: i costrutti rimangono gli stessi indipendentemente dalla quantità di dati. Queste query di base funzionano su qualsiasi tabella del database. In effetti, uno dei principali elementi di differenziazione di SQL è la scalabilità, che distingue SQL da Excel e da altri strumenti simili.

Ecco le parti fondamentali di una query SQL:

1. SELEZIONA e DA

La parola chiave SELECT viene utilizzata per recuperare i dati dal database. Si possono specificare i nomi delle colonne (cioè il tipo di dati che si desidera visualizzare, come il nome del cliente o l'età), oppure si possono visualizzare tutti i dati della tabella.

La parola chiave FROM specifica la tabella o le tabelle da cui devono essere recuperati i dati. Ad esempio, se si vuole ottenere un elenco di tutti i clienti del database con il loro nome e le loro informazioni di posta elettronica. Queste informazioni si trovano nella tabella Customers mostrata di seguito:

Customer_IDCustomer_NameEmailCityCountryAgeSex
1211Antonioxxxx@xxxx.comParisFR32Male
1212Paulineyyyy@yyyy.comLondonUK42Female
1213Matteozzzz@zzzz.comNew YorkUS28Male
1214Sethaaa@bb.comSydneyAU32Male
1215Agathabbb@ccc.comWashington DCUS24Female

Ecco la query da usare per ottenere un elenco di tutti i nomi dei clienti con i loro indirizzi e-mail:

SELECT Customer_Name, Email
FROM Customers;

E l'output:

Customer_NameEmail
Antonioxxxx@xxxx.com
Paulineyyyy@yyyy.com
Matteozzzz@zzzz.com
Sethaaa@bb.com
Agathabbb@ccc.com

Per saperne di più su SELECT, consultare il corso SQL per principianti e nell'articolo How Do You Write a SELECT Statement in SQL, che contiene numerosi esempi.

2. DOVE

Supponiamo di gestire un sito di commercio elettronico che ha una promozione per i clienti statunitensi. In questo caso, si vuole inviare l'e-mail solo ai clienti statunitensi; l'elenco che si vuole selezionare deve contenere solo clienti statunitensi. In questo caso si può usare la clausola WHERE.

Quindi, se si utilizza questa query...

SELECT Customer_Name, Email
FROM Customers
WHERE Country =  'US';

... si otterranno questi risultati:

Customer_NameEmail
Matteozzzz@zzzz.com
Agathabbb@ccc.com

La clausola WHERE viene utilizzata per filtrare righe specifiche in base al valore di una o più colonne (in questo caso, si tratta della colonna Country, che non viene mostrata nei risultati).

Supponiamo di voler elencare solo le donne degli Stati Uniti. È possibile filtrare per più condizioni in WHERE se si utilizza la parola chiave AND:

SELECT Customer_Name, Email
FROM Customers
WHERE Country = 'US'
AND Sex = 'FEMALE';

Ecco il risultato:

Customer_NameEmail
Agathabbb@ccc.com

Nella query precedente, il valore di Country e Sex per ciascuna riga viene valutato rispetto alle condizioni della clausola WHERE. Verranno restituite solo le righe in cui entrambe le condizioni sono vere. Se si desidera restituire i risultati quando una (o una qualsiasi) delle condizioni di WHERE è vera, utilizzare la parola chiave OR:

SELECT Customer_Name, Email
FROM Customers
WHERE Country = 'US'
OR Sex = 'FEMALE';

In questo modo vengono selezionati tutti i clienti di sesso femminile e tutti i clienti che vivono negli Stati Uniti. Notate la differenza nei risultati:

Customer_NameEmail
Paulineyyyy@yyyy.com
Matteozzzz@zzzz.com
Agathabbb@ccc.com

Avete bisogno di altre risorse sulla clausola WHERE? Consultate questi articoli:

3. ORDINARE PER

Supponiamo di avere nel database un'altra tabella chiamata Orders tabella.

Order_IdItemQuantityCustomer_IdTotal_Value
23A62411212$100
22Ae3431213$210
13A21141213$249
11AXXX41212$212

Si desidera visualizzare gli ordini più importanti e i loro dettagli. Un modo per farlo è elencare gli ordini in ordine decrescente (10-1, Z-A) per valore. Si può usare una query come questa:

SELECT *
FROM Orders
ORDER BY Total_Value DESC;

E si otterrebbe:

Order_IdItemQuantityCustomer_IdTotal_Value
13A21141213$249
11AXXX41212$212
22Ae3431213$210
23A62411212$100

L'uso di un '*' dopo SELECT indica al motore SQL di recuperare tutte le colonne di una tabella. La clausola ORDER BY indica che i risultati devono essere mostrati in un ordine particolare. Per impostazione predefinita, i risultati vengono restituiti in ordine crescente (1-10, A-Z); tuttavia, poiché abbiamo citato esplicitamente la parola chiave DESC, i risultati vengono restituiti in ordine decrescente.

Per saperne di più, consultate l'eccellente Guida dettagliata a SQL ORDER BY.

4. CASO

In genere, un'azienda ha migliaia di righe nella tabella. Orders tabella. Non sempre si vuole vedere il valore totale di ogni ordine. Si desidera invece categorizzare gli ordini in base al valore o ad altre logiche.

Se si desidera classificare gli ordini in valore 'Alto' o 'Basso', a seconda che il valore dell'ordine sia superiore o inferiore a 150 dollari, si può usare il costrutto CASE:

SELECT Order_Id, Total_Value
       CASE WHEN Total_value > 150 THEN 'HIGH' 
            WHEN Total_value < 150 THEN 'LOW' 
            ELSE 'MEDIUM' END as Order_Category
FROM Orders;

Ecco cosa si ottiene:

Order_IdTotal_ValueOrder_Category
13$249HIGH
11$212HIGH
22$210HIGH
23$100LOW

In questa query, ogni riga è valutata dalla funzione CASE. Alle righe viene assegnata una categoria in base alla prima condizione (cioè WHEN .. THEN ..) che risulta vera. Poiché gli ordini con ID 13, 11 e 22 sono superiori a 150 dollari, vengono classificati come "ALTO". All'ordine con ID 23 viene assegnato "LOW".

ELSE specifica un valore di ritorno predefinito se nessuna delle condizioni è valutata vera per una riga.

Sul blog LearnSQL.it sono disponibili diversi articoli interessanti sull'uso di CASE nelle query SQL. Eccone solo alcuni:

5. GRUPPO PER

Spesso, per ricavare informazioni da grandi insiemi di dati, è necessario raggruppare elementi simili. Il raggruppamento dei dati ci aiuta a trovare modelli, comportamenti o metriche. Questo raggruppamento si chiama aggregazione e si può ottenere con la clausola SQL GROUP BY.

In genere si utilizza una funzione per calcolare la metrica del gruppo. Le funzioni di aggregazione comunemente utilizzate sono SUM(), COUNT(), AVG(), MAX() e MIN(). Con queste funzioni si possono fare molte cose, ad esempio calcolare le spese totali di un reparto o contare il numero di dipendenti in ogni sede.

Supponiamo che nella vostra azienda abbiate un'offerta che prevede l'invio di un omaggio al cliente che spende di più sul vostro sito web. È possibile utilizzare la clausola SQL GROUP BY per recuperare il primo cliente in termini di valore totale dell'ordine. Ecco la query:

SELECT Customer_Id, SUM(Total_Value)
FROM Orders
GROUP BY Customer_Id
ORDER BY 2 DESC;

Ecco il risultato:

Customer_IdSUM(Total_Value)
1213$459
1212$312

È chiaro che il vostro cliente principale è Customer_Id 1213.

La query funziona selezionando prima tutti i valori univoci di Customer_Id e poi usando GROUP BY per trovare la somma totale aggregata per ciascuno (cioè il valore totale di tutti i loro ordini). La clausola ORDER BY 2 DESC visualizza i risultati in ordine decrescente per SUM(Total_Value).

Per ulteriori informazioni su GROUP BY nell'analisi dei dati, consultate Cos' è GROUP BY in SQL.

6. JOIN

Nell'esempio precedente, abbiamo trovato il sito Customer_id del cliente che ha speso di più. Ma la tabella Orders tabella non contiene altre informazioni sul cliente, come il nome o i dettagli della comunicazione. È necessario scrivere un'altra query alla tabella per recuperare i dati richiesti. Customers per recuperare i dati richiesti, oppure si può usare la funzione JOIN.

La funzione SQL JOIN consente di selezionare informazioni da più tabelle in un'unica query. In genere, si collegano due tabelle in base a uno o più valori di colonne comuni a entrambe le tabelle.

Nel nostro caso possiamo usare Customer_Id come campo comune. In questo modo si uniranno le tabelle Customers e Orders e le tabelle:

SELECT b.Customer_Name, b.Email, a.Customer_Id, SUM(Total_Value)
FROM Orders a
JOIN Customers b
ON a.Customer_id = b.Customer_Id
GROUP BY b.Customer_Name, b.Email, a.Customer_Id
ORDER BY 4 DESC;

Questo è l'output:

Customer_NameEmailCustomer_IdSUM(Total_Value)
Matteozzzz@zzzz.com1213$459
Paulineyyyy@yyyy.com1212$312

Ora la query restituisce anche i dati del cliente di cui si ha bisogno. Funziona confrontando i campi Customer_Id in entrambe le tabelle e recuperando solo le righe in cui i valori corrispondono. Si noti che gli ID cliente 1211, 1214 e 1215 non sono presenti nei risultati; non c'erano righe corrispondenti nella tabella per questi valori. Orders tabella per questi valori.

Se si desidera visualizzare tutti i valori, anche quelli che non hanno una corrispondenza nell'altra tabella, è possibile utilizzare una cosiddetta OUTER JOIN. Le unioni possono essere un po' complicate da capire, ma sono uno dei concetti più importanti di SQL. Date un'occhiata a questo corso su SQL JOIN. Offre 93 esercizi che coprono tutti i tipi di JOIN (ce ne sono diversi).

Prossimi passi per imparare l'analisi dei dati in SQL

Spero che queste query vi abbiano dato abbastanza idee per iniziare ad analizzare i dati con SQL. Se non capite perfettamente le query, non preoccupatevi. Potete seguire il nostro corso SQL per principianti per esercitarvi, oppure il nostro percorso di apprendimento completo SQL dalla A alla Z per avere una visione completa di ciò che questo linguaggio può fare. L'obiettivo finale non è solo imparare l'SQL, ma utilizzarlo nel lavoro quotidiano e sviluppare l'abitudine di usare l'analisi dei dati per prendere decisioni.

Gli esempi che vi ho mostrato sono ovviamente molto semplici. Volevo solo farvi capire i concetti principali e vedere quanto sia facile creare query SQL. Quando sarà il momento, imparerete a creare query più sofisticate. Queste renderanno il vostro lavoro più semplice e forse attireranno anche l'ammirazione generale dei vostri colleghi (o del vostro capo). Conoscere l'SQL è fantastico!

Una volta apprese le basi dell'SQL, ponetevi queste domande quando vi preparate a prendere una decisione aziendale:

  1. Di quali dati ho bisogno per supportare o aiutare la mia decisione?
  2. Ho già quei dati nel mio database?
  3. Se sì, come posso recuperare e presentare i dati in modo che mi aiutino a prendere una decisione?

L'orientamento ai dati è una caratteristica che si può inculcare con la pratica. Quindi, continuate a esercitarvi e a imparare!