5th Sep 2025 Tempo di lettura: 9 minuti Mini-tutorial: Analizzare dati meteo reali in SQL e trovare il periodo migliore per viaggiare LearnSQL.it Team analisi dati Indice Cercate il sole e la pioggia? Per iniziare: Caricare il dataset meteo Passo dopo passo: Analisi dei dati meteo in SQL Iniziare con l'esplorazione dei dati Qual è la temperatura media a Szeged? Qual è il mese più caldo a Szeged? Quali sono i tipi di tempo più comuni? Quanto spesso piove ogni mese? Quali giorni erano freddi e ventosi? Sfida: qual è stata la temperatura più calda mai registrata? Prova con altre città Cercate il momento perfetto per andare in vacanza? Con poche query SQL e i dati meteo reali di Szeged, in Ungheria, è possibile scoprire quali sono i mesi più caldi, quelli più piovosi o quelli ideali per una passeggiata al sole. Questo mini-tutorial è un modo divertente e pratico per affinare le vostre abilità con l'SQL, e magari per pianificare il vostro prossimo viaggio. Cercate il sole e la pioggia? Pianificare una vacanza non significa solo scegliere una destinazione. È anche una questione di tempismo: quando il tempo è effettivamente piacevole? Con poche query SQL è possibile rispondere a domande come: Qual è il mese più caldo in una città? Quando piove più spesso? Le giornate ventose sono frequenti in primavera? In questo tutorial lavorerete con dati meteorologici storici reali di Szeged, in Ungheria, e metterete in pratica abilità SQL essenziali come SELECT, GROUP BY, HAVING e ORDER BY. Si tratta di un mini progetto pratico che combina la pratica del mondo reale con un po' di curiosità di viaggio. Volete prima ripassare le nozioni di base? Provate il corso SQL per principianti su LearnSQL.it: è facile da seguire, interattivo e insegna tutto ciò che serve per seguire questo tutorial. È possibile adattare queste query per analizzare il meteo di altre località. API meteo storico Cercate dati di altre località? L'API Open-Meteo Historical Weather è un'ottima risorsa gratuita per scaricare la storia del tempo per città o coordinate. L'SQL non è solo per i report e i cruscotti: può anche aiutarvi a pianificare la vostra prossima vacanza. Immergiamoci in questo mondo. Per iniziare: Caricare il dataset meteo Utilizzeremo il dataset pubblico Weather in Szeged 2006-2016 di Kaggle, che contiene dati meteo giornalieri dal 2006 al 2016. Scaricare i dati: Visitare la pagina di Kaggle e scaricare il fileweatherHistory.csv. Preparare il file per l'importazione. Per importare il file in un database di vostra scelta, dovete: Rimuovere il sito +01:00 dal sito Formatted Date Per farlo si può usare la funzione Cerca e sostituisci del proprio editor. Rinominare le intestazioni in modo da utilizzare i trattini bassi al posto degli spazi. È possibile modificare il file utilizzando Excel, Notepad o qualsiasi altro editor di testo. Ecco la riga di intestazione ripulita: formatted_date,summary,precip_type,temperature_c,apparent_temperature_c,humidity,wind_speed_kmh,wind_bearing_deg,visibility_km,pressure_mb,daily_summary Creare la tabella nel database CREATE TABLE szeged_weather ( formatted_date TEXT, summary TEXT, precip_type TEXT, temperature_c FLOAT, apparent_temperature_c FLOAT, humidity FLOAT, wind_speed_kmh FLOAT, wind_bearing_deg FLOAT, visibility_km FLOAT, pressure_mb FLOAT, daily_summary TEXT ); Importare il file CSV In PostgreSQL: COPY szeged_weather FROM '/path/to/weatherHistory.csv' DELIMITER ',' CSV HEADER; o in MySQL: LOAD DATA INFILE '/path/to/weatherHistory.csv' INTO TABLE szeged_weather FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; Assicurarsi che il database sia configurato per consentire l'importazione di file. Passo dopo passo: Analisi dei dati meteo in SQL Iniziare con l'esplorazione dei dati Prima di tuffarsi nell'analisi, è utile capire con che tipo di dati si sta lavorando. Vediamo un'anteprima di alcune righe del set di dati. Query SQL SELECT * FROM szeged_weather LIMIT 5; Esempio di output formatted_datesummaryprecip_typetemperature_capparent_temperature_chumiditywind_speed_kmhwind_bearing_degvisibility_kmpressure_mbdaily_summary 2016-09-01 00:00:00Partly Cloudyrain21.121.00.8913.02309.51012.3Partly cloudy throughout the day 2016-09-01 01:00:00Mostly Cloudyrain20.720.60.9211.32409.41012.1Partly cloudy throughout the day 2016-09-01 02:00:00Overcastrain20.320.20.9310.72459.21011.9Partly cloudy throughout the day 2016-09-01 03:00:00Overcastrain19.919.80.949.92509.01011.7Partly cloudy throughout the day 2016-09-01 04:00:00Mostly Cloudyrain19.519.40.959.32558.91011.6Partly cloudy throughout the day Come funziona SELECT * restituisce tutte le colonne - utile per una prima occhiata. LIMIT 5 restituisce solo le prime 5 righe. In questo modo l'output è gestibile e non sovraccarica il database. Cosa avete appena imparato Anteprima della struttura dei dati Scansione delle colonne disponibili Conferma del formato e dei tipi di dati 🔗 S iete nuovi a SQL? Il corso SQL per principianti su LearnSQL.it vi guida attraverso questi primi passi in modo interattivo, perfetto per chi è alle prime armi. Cosa significa per voi Vedrete colonne come formatted_date, temperature_c, wind_speed_kmh e summary. In questo modo si può capire cosa è possibile fare e quali campi possono essere filtrati o raggruppati in seguito. Qual è la temperatura media a Szeged? Cominciamo con qualcosa di semplice: la temperatura media dell'intero set di dati. Query SQL SELECT ROUND(AVG(temperature_c), 1) AS avg_temp FROM szeged_weather; Esempio di risultato avg_temp 14.6 Come funziona AVG() calcola il valore medio. ROUND(..., 1) rende più facile la lettura mostrando un solo decimale. Cosa avete appena imparato Aggregazione di base con AVG() Formattazione dei risultati numerici Ottenere un numero di grande formato da dati grezzi 🔗 Volete padroneggiare le funzioni SQL? Date un'occhiata al Funzioni SQL standard su LearnSQL.it - copre AVG(), SUM(), MIN(), MAX() e altro ancora, con esercizi pratici e casi d'uso reali. Cosa significa per voi Il risultato indica la temperatura media giornaliera di Szeged per l'intero periodo di 10 anni. Questo è utile come punto di riferimento: in seguito, è possibile confrontare mesi o giorni specifici con questa linea di base. Qual è il mese più caldo a Szeged? Siete alla ricerca di giornate calde e soleggiate, magari per visitare i mercati locali, fare una passeggiata lungo il fiume o semplicemente evitare di mettere in valigia il cappotto. Scopriamo quale mese ha la temperatura media più alta a Szeged. Query SQL SELECT EXTRACT(MONTH FROM formatted_date) AS month, ROUND(AVG(temperature_c), 1) AS avg_temp FROM szeged_weather GROUP BY month ORDER BY month; Esempio di risultato monthavg_temp 10.4 22.6 37.9 413.5 518.6 622.3 724.9 824.4 919.1 1013.0 116.7 121.5 Come funziona EXTRACT(MONTH FROM ...) estrae il mese da ogni data. AVG(temperature_c) calcola la temperatura media mensile. ROUND(..., 1) la formatta con un decimale. GROUP BY e ORDER BY struttura i risultati per facilitarne il confronto. Cosa avete appena imparato Aggregazione con AVG() Lavorare con parti di data utilizzando EXTRACT() Raggruppare e ordinare i risultati delle query 📘 Volete esercitarvi in modo più strutturato? Provate il Pratica di SQL Group BY su LearnSQL.it. Questo corso per principianti si concentra sull'uso di GROUP BY con funzioni aggregate come AVG(), SUM(), MIN() e COUNT() in diversi scenari e insiemi di dati. È perfetto per rafforzare ciò che si è appena esercitato in un formato interattivo. Cosa significa per voi Luglio è il mese più caldo a Szeged, mentre agosto lo segue a breve distanza. Maggio e settembre sono miti e adatti a chi preferisce un clima confortevole. Evitate i mesi da gennaio a marzo se sperate in giornate calde. Quali sono i tipi di tempo più comuni? Vediamo quali sono i tipi di tempo più probabili, in base alla colonna di riepilogo. Query SQL SELECT summary, COUNT(*) AS occurrences FROM szeged_weather GROUP BY summary ORDER BY occurrences DESC LIMIT 10; Esempio di risultato summaryoccurrences Partly Cloudy5200 Mostly Cloudy4300 Clear3800 Overcast3100 Foggy1900 Breezy and Partly Cloudy1200 Breezy and Mostly Cloudy1100 Humid and Mostly Cloudy950 Dangerously Windy and Partly Cloudy850 Dry and Mostly Cloudy800 Come funziona COUNT(*) calcola la frequenza con cui appare ogni riepilogo. GROUP BY summary raggruppa valori identici. ORDER BY ... DESC e LIMIT aiutano a concentrarsi sui 10 tipi di tempo principali. Cosa avete appena imparato Analisi di frequenza con COUNT(*) Ordinamento decrescente dei risultati Limitare l'output con LIMIT Cosa significa per voi La dicitura "Parzialmente nuvoloso" è molto comune, quindi ci si può aspettare un cielo misto. Se la vostra vacanza ideale richiede un sole costante, controllate la frequenza di "Sereno". Quanto spesso piove ogni mese? Il clima caldo è fantastico, ma non se piove continuamente. Scopriamo quanto spesso piove a Szeged ogni mese - non solo le precipitazioni totali, ma anche il numero di ore in cui piove. Ogni riga di questo set di dati rappresenta un'ora di tempo. Quindi, quando calcoliamo le percentuali di pioggia, stiamo rispondendo: "Di tutte le ore in un dato mese, quante hanno avuto pioggia?". Query SQL SELECT EXTRACT(MONTH FROM formatted_date) AS month, ROUND( SUM(CASE WHEN LOWER(summary) LIKE '%rain%' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 1 ) AS percent_rainy FROM szeged_weather GROUP BY month ORDER BY month; Esempio di output monthpercent_rainy 112.8 210.2 315.3 418.1 521.5 625.6 719.2 816.8 920.4 1017.7 1114.9 1213.3 Come funziona EXTRACT(MONTH FROM formatted_date) fornisce il numero del mese (1-12) LOWER(summary) si assicura che corrispondano parole come "pioggia" o "rain". CASE WHEN ... THEN 1 ELSE 0 END controlla ogni riga: Se contiene "pioggia" → ritorno 1 Se no → ritorno 0 SUM(...) somma tutti gli 1 - questo è il numero di ore di pioggia in quel mese COUNT(*) ci dà il totale delle ore nel mese Dividiamo, moltiplichiamo per 100 e arrotondiamo il risultato per ottenere una percentuale pulita. Cosa avete appena imparato Usare EXTRACT() per raggruppare i dati per mese Applicazione di un contatore condizionale con CASE WHEN all'interno SUM() Rendere le ricerche di testo insensibili alle maiuscole e alle minuscole con LOWER() Calcolo di percentuali da dati raggruppati Formattazione dei numeri con ROUND() 📘 Volete affinare ulteriormente queste competenze? Date un'occhiata al Come creare semplici report SQL su LearnSQL.it. Questo corso interattivo spiega come utilizzare le funzioni aggregate (AVG(), COUNT(), SUM()), come classificare i dati con CASE WHEN e come creare semplici report con GROUP BY. È adatto ai principianti, con scenari reali e oltre 90 esercizi pratici per rafforzare quanto appreso. Cosa significa per voi Se state pianificando una vacanza, questo vi fornisce il quadro reale: Giugno ha una maggiore probabilità di pioggia, circa il 25% di tutte le ore. Agosto è più sicuro, con meno ore di pioggia. Utilizzate questo approccio anche per altre condizioni: neve, nebbia o tempo soleggiato. Basta cambiare una parola nella clausola LIKE. Quali giorni erano freddi e ventosi? Alcune condizioni meteorologiche non compaiono nelle medie mensili. Cerchiamo di individuare i giorni in cui c'è stato sia freddo che vento, condizioni che rendono scomodo stare all'aperto. Query SQL SELECT formatted_date, temperature_c, wind_speed_kmh FROM szeged_weather WHERE temperature_c < 5 AND wind_speed_kmh > 30 ORDER BY temperature_c; Esempio di output formatted_datetemperature_cwind_speed_kmh 2015-01-07 05:00:00-6.434.2 2013-12-01 03:00:00-3.831.7 2014-02-12 08:00:00-2.536.0 2016-01-19 04:00:000.932.5 2012-11-28 01:00:004.233.1 Come funziona WHERE filtra le righe che soddisfano entrambe le condizioni: freddo e vento. ORDER BY temperature_c le elenca dal più freddo in su. Cosa avete appena imparato Condizioni multiple in un filtro Operatori logici (AND) Ordinamento per colonne specifiche Cosa significa per voi Questi giorni sono rari ma duri. La maggior parte cade tra novembre e marzo. Questo conferma l'idea che Szeged non è ideale per i viaggi invernali. Sfida: qual è stata la temperatura più calda mai registrata? Ecco un'occasione per mettere in pratica quanto appreso. Riuscite a trovare la singola ora più calda nell'intero set di dati di Szeged? Compito SQL Avrete bisogno di: MAX(temperature_c) trovare il valore più alto registrato ORDER BY temperature_c DESC ordinare i dati LIMIT 1 restituire solo l'ora più calda Oppure utilizzare una sottoquery per restituire sia la temperatura che la data in cui si è verificato il fenomeno. Lasciamo a voi la query. Provatela, testatela e scoprite che tipo di estremi estivi ha affrontato Szeged! Prova con altre città La parte migliore? Queste query funzionano ovunque. Se siete curiosi di sapere qual è il mese più ventoso di Varsavia o la stagione più soleggiata di Sydney, caricate un dataset meteo storico in SQL e iniziate a esplorare. Non si tratta solo di esercitarsi, ma di scoprire. Dati reali. Domande reali. Risposte reali. E forse anche il vostro prossimo luogo di vacanza. Volete affinare ulteriormente le vostre competenze in SQL? LearnSQL.it offre corsi pratici e interattivi in cui si scrive e si esegue SQL nel browser. Iniziate con il corso SQL per principianti e proseguite da lì. Tags: analisi dati