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

SQL in Google Sheets? Sì, è possibile!

Sapevate che è possibile scrivere query di tipo SQL nei fogli di calcolo di Google? Questa funzione è incredibilmente potente e versatile e può sostituire la maggior parte delle funzionalità offerte dalle tabelle pivot di Excel.

Leggete il nostro articolo per scoprire come utilizzare facilmente la funzione QUERY per lavorare in modo efficiente con i dati di Google Sheets.

I database relazionali condividono molte caratteristiche con i fogli di calcolo. Quando spieghiamo cosa sono i database, spesso diciamo che sono un po' come i fogli di calcolo, ma che ci danno un maggiore controllo su grandi quantità di dati.

Per comunicare con i database, di solito si usa l'SQL, che è un modo efficace per recuperare i dati da un database. (Se non avete mai sentito parlare di SQL, iniziate a leggere il nostro breve articolo The Complete Beginner's Guide to SQL Fundamentals).

SQL è un linguaggio di interrogazione universale. Esiste dagli anni '70 ed è ancora estremamente popolare. Conoscere l'SQL aumenta le possibilità di una carriera stabile nel settore IT, poiché queste conoscenze sono ricercate da molti datori di lavoro. Se volete scoprire i vantaggi dell'uso di SQL, date un'occhiata a 5 grandi vantaggi dell'apprendimento di SQL.

Torniamo ora ai fogli di calcolo. I fogli di calcolo sono importanti perché non sempre i dati vengono memorizzati in un database. Molte aziende utilizzano file CSV o fogli di calcolo per gestire le informazioni. Questi possono essere aperti in applicazioni come Google Sheets o Microsoft Excel, ma questi file non funzionano con i database in quanto tali.

Questo significa che non si può usare SQL quando si lavora con i dati nei fogli di calcolo? Assolutamente no! Google Sheets offre un'opzione QUERY che consente di scrivere istruzioni simili a SQL e di recuperare i dati in modo simile a SQL. In questo modo, è possibile utilizzare la potenza dell'SQL anche se non si dispone di un database con cui lavorare!

Inutile dire che Google Sheets è disponibile gratuitamente. Il programma può aprire un'ampia gamma di formati di file, compresi i file CSV ed Excel.

Poiché SQL è un linguaggio di interrogazione dei dati ben progettato e standardizzato, pensare in termini di SQL quando si lavora in Google Sheets può aiutare le analisi. Per saperne di più, consultate il post Come iniziare a pensare in SQL di Jeffrey Edison, consulente tecnico di NoSide.

In questo articolo vi mostreremo alcuni esempi di base di lavoro con l'SQL in Google Sheets. Una certa conoscenza di SQL è consigliata, ma non è necessaria per comprendere i concetti che presenteremo. Dovreste essere in grado di seguire gli esempi anche se non avete mai visto un'istruzione SQL prima d'ora. Tuttavia, se volete imparare l'SQL, date un'occhiata al corso LearnSQL.it' SQL Fundamentals , che non presuppone alcuna esperienza precedente e vi trasformerà in un utente SQL intermedio.

Campionamento dei dati di Google Sheets

In questo articolo lavoreremo con un semplice foglio di calcolo di Google Sheets che contiene alcune informazioni di base su alcuni hotel selezionati in Indonesia. Abbiamo utilizzato hotel immaginari, quindi non cercate di trovarli.

Campionamento dei dati di Google Sheets

È possibile visualizzare il foglio di calcolo e tutte le query presentate in questo articolo nel nostro foglio Google "Hotel Query". C'è un foglio separato per ogni query discussa in questo articolo.

La Hotels contiene le seguenti colonne:

  • Id - L'identificativo univoco dell'hotel.
  • Nome - Il nome dell'hotel.
  • Stelle - Il numero di stelle assegnate all'hotel: 3, 4 o 5.
  • Rating - La valutazione media dell'hotel da parte dei suoi ospiti, su una scala da 0 a 10.
  • TwinRoomPrice - Il prezzo base di una camera doppia per una notte.
  • Città - La città in cui si trova l'hotel: Bandung, Denpasar o Surabaya.

Anche se gli hotel sono immaginari, le città sono reali. Cercate su Google Bandung, Denpasar e Surabaya: sono ottime destinazioni di viaggio in Indonesia!

Bene. Ora che conosciamo i dati, impariamo a utilizzare SQL in Sheets.

Capire la funzione Query

Per scrivere istruzioni di tipo SQL in Google Sheets, abbiamo bisogno di una sola funzione chiamata QUERY. Il formato della funzione non è particolarmente difficile:

=QUERY(data, query, [headers])

Come si può vedere, la funzione QUERY richiede tre parametri, di cui solo due sono obbligatori. Vediamo questi parametri:

  • data - L'intervallo di celle che contiene i dati (in questo caso, l'intervallo è l'intera tabella). Hotels tabella).
  • query - La query di tipo SQL da eseguire.
  • headers - Il numero di righe che contengono informazioni di intestazione. Queste si trovano solitamente nella parte superiore dei dati, cioè i nomi delle colonne. Questo argomento è facoltativo. Se non viene fornito, Google Sheets cercherà di capirlo. L'applicazione è abbastanza brava in questo, quindi il parametro non è in genere necessario. In questo articolo lo ometteremo.

Non preoccupatevi se questi parametri vi sembrano un po' vaghi: nei prossimi paragrafi vi forniremo alcuni esempi facili da seguire.

Prima query in Google Sheets

Cominciamo con l'esempio più semplice possibile. Selezioneremo semplicemente tutti i dati della nostra tabella. Hotels tabella.

Per prima cosa sceglieremo una cella libera a destra della tabella di Hotels della tabella in Google Sheets e iniziamo a scrivere la nostra query nel modo seguente. (Non premere ancora Invio).

=QUERY(A1:F23,

Il primo parametro, data, è l'intervallo di celle. In questo caso, abbiamo fornito A1:F23, che corrisponde all'intervallo della tabella, come mostrato nell'immagine seguente. Hotels come mostrato nell'immagine seguente.

Tabella Hotel

Ora, dopo la virgola, dobbiamo inserire la nostra query SQL tra virgolette. Il nome ufficiale del linguaggio di interrogazione utilizzato in Google Fogli è Google Visualization API Query Language. Per selezionare tutti i dati, abbiamo bisogno del seguente codice:

=QUERY(A1:F23,"SELECT *")

Si noti che potrebbe essere necessario sostituire la virgola che separa i parametri con un punto e virgola o un altro carattere, in base alle impostazioni di Google Sheets.

In Google Sheets, SELECT * significa "seleziona tutto". Si noti quanto questa istruzione sia simile al suo equivalente SQL, SELECT * FROM Hotels. In Google Sheets, omettiamo la clausola FROM perché l'intervallo di dati è specificato nel primo argomento.

Se ora si preme Invio, Google Sheets trasformerà la query in un insieme di risultati, come mostrato nell'immagine seguente:

SELEZIONARE * DA Hotel

La tabella che si vede è essenzialmente identica alla tabella originale. Questo è il comportamento previsto. La nostra query era SELECT *, che significa "mostra tutto dai dati originali".

Ottimo! Abbiamo appena scritto la nostra prima query in Google Sheets!

Lavorare con colonne e condizioni

Ora diamo un'occhiata ad alcuni esempi più avanzati. Supponiamo di voler mostrare solo tre colonne: Nome, Valutazione e Prezzo della camera doppia. Inoltre, vogliamo visualizzare solo gli hotel a tre stelle.

In questo caso, dovremo fare riferimento alle singole colonne. La query avrà questo aspetto:

=QUERY(A1:F23, "SELECT B, D, E WHERE C=3")

Come si può notare, invece di utilizzare i nomi delle colonne della nostra tabella (come Nome, Stelle o Valutazione), utilizziamo le lettere delle colonne fornite da Google Sheets. La colonna Nome si trova nella colonna B del foglio di calcolo, quindi abbiamo usato SELECT B per mostrarla nella tabella risultante. Allo stesso modo, abbiamo usato D per selezionare la colonna Valutazione ed E per selezionare la colonna Prezzo camera doppia. Anche le colonne sono separate da virgole, ma non c'è una virgola dopo l'ultima colonna che vogliamo selezionare.

Dopo aver selezionato le colonne, aggiungiamo WHERE C=3. C si riferisce alla colonna Stars, quindi l'istruzione significa fondamentalmenteselezionare solo gli hotel a tre stelle (cioè dove la colonna C è uguale a 3).

L'immagine seguente mostra come la query si riferisce alle singole colonne:

seleziona solo hotel a tre stelle

Quando premiamo Invio, Google Sheets produce una tabella ordinata che contiene tre colonne con tutte le informazioni sugli hotel a tre stelle: Nome, Valutazione e Prezzo camera doppia.

seleziona solo hotel a tre stelle

Si noti che la query SQL equivalente sarebbe molto simile:

SELECT Name, Rating, TwinRoomPrice
FROM Hotels
WHERE Stars=3;

Aggiungere altre condizioni e ordinare le righe

Nel prossimo esempio vogliamo trovare tutti gli hotel di Bandung con una valutazione superiore a 7,0. Inoltre, vogliamo che gli hotel risultanti siano ordinati dal meno costoso al più costoso.

Per soddisfare questi requisiti, dovremo aggiungere due nuove parti. Dovremo unire più condizioni con la parola chiave AND, e dovremo ordinare le righe con una nuova clausola chiamata ORDER BY. Ecco la query:

=QUERY(A1:F23, "SELECT * WHERE D > 7.0 AND F='Bandung' ORDER BY E")

Osservare la clausola WHERE della query precedente. La colonna D contiene le valutazioni degli hotel. In questo caso, vogliamo che la valutazione sia superiore a 7,0. Vogliamo inoltre introdurre un'altra condizione: gli hotel devono essere situati a Bandung. Per introdurre più di una condizione, utilizziamo la parola chiave AND.

La colonna F contiene le città degli hotel, quindi abbiamo scritto F='Bandung' per ottenere gli hotel di Bandung. Si noti che i valori di testo devono essere circondati da apici singoli (a differenza dei numeri). Se si dimenticano le virgolette, si otterrà un errore.

Infine, abbiamo aggiunto il seguente pezzo di codice: ORDER BY E. La clausola ORDER BY viene utilizzata per ordinare le righe risultanti. In questo caso, vogliamo ordinare le righe in base a TwinRoomPrice, che si trova nella colonna E. Per impostazione predefinita, le righe saranno ordinate in ordine crescente.

Quando si preme il pulsante Invio, si può vedere la tabella risultante. In effetti, si possono vedere solo gli hotel di Bandung con una valutazione superiore a 7,0. Si noti che tutte le righe sono ordinate per prezzo.

hotel di Bandung con una valutazione superiore a 7.0

Conteggio delle righe raggruppate

Infine, passiamo a due esempi che possono essere utilizzati per produrre risultati simili alle tabelle pivot di Excel.

In primo luogo, vogliamo contare il numero di hotel in ogni città. Per farlo, utilizzeremo la seguente query:

=QUERY(A1:F23,"SELECT F, COUNT(A) GROUP BY F ")

La query contiene due nuovi elementi: COUNT(A) e GROUP BY F. Cominciamo con quest'ultimo.

GROUP BY F significa che vogliamo dividere tutte le righe in gruppi in base ai valori della colonna F (che è la città). Eseguiamo il raggruppamento (noto anche come "aggregazione") per poter mostrare ogni città (SELECT F) insieme al numero di hotel in quella città (COUNT(A)).

COUNT(A) conta il numero di righe nel gruppo dato. Se non viene fornita la clausola GROUP BY, conterà tutte le righe. Abbiamo inserito la colonna A(Id) tra le parentesi, in modo da contare tutti gli hotel unici. Abbiamo scelto Id per convenzione; si potrebbe usare un'altra colonna, come B (il nome dell'hotel), ma le colonne ID sono di solito preferite perché contengono sempre valori unici.

Le funzioni aggregate (come COUNT()) e la clausola GROUP BY sono trattate nel nostro corsoSQL Fundamentals . Dateci un'occhiata se volete capire come funzionano queste funzioni di SQL.

Quando si preme Invio, si vede la tabella risultante con il numero di hotel in ogni città:

numero di hotel in ogni città

La query SQL equivalente sarebbe la seguente:

SELECT City, COUNT(Id)
FROM Hotels
GROUP BY City;

Trovare le medie

Nell'ultimo esempio, calcoleremo la valutazione media e il prezzo medio degli hotel di ogni categoria (tre stelle, quattro stelle e cinque stelle). Avremo bisogno della seguente query:

=QUERY(A1:F23, "SELECT C, AVG(D), AVG(E) GROUP BY C")

Abbiamo utilizzato GROUP BY C per raggruppare tutti gli hotel in base alla colonna Stelle. Abbiamo anche introdotto AVG(D) e AVG(E), che sono utilizzati per calcolare i valori medi nelle colonne D(Rating) ed E(TwinRoomPrice), rispettivamente. Quando si preme Invio, si dovrebbe vedere questa tabella di risultati:

Trovare le medie

L'istruzione SQL equivalente sarebbe la seguente:

SELECT Stars, AVG(Rating), AVG(TwinRoomPrice)
FROM Hotels
GROUP BY Stars;

Query SQL(ish) in Google Sheets? Assolutamente sì!

In questo articolo ho spiegato come utilizzare un linguaggio di query simile a SQL in Google Sheets. Ora dovreste avere una solida conoscenza della funzione QUERY in Sheets. Potete anche vedere quanto il linguaggio di query di Google sia simile all'SQL standard.

Se vi è piaciuto imparare questo e siete curiosi di conoscere l'SQL, date un'occhiata al corso LearnSQL.it' SQL Fundamentals . C'è una prova gratuita che vi aiuterà a iniziare!

Il linguaggio di query di Google è sicuramente più completo di quanto siamo riusciti a mostrare in questo articolo introduttivo. Se siete interessati a utilizzare le altre funzioni, consultate la documentazione ufficiale di Google Visualization API Query Language.