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

Il tuo anno in dati: Come SQL aiuta a riassumere 12 mesi di informazioni

Avete mai desiderato analizzare il vostro anno come fa Spotify Wrapped? Con poche query SQL, potete trasformare i dati dei vostri allenamenti, o qualsiasi altro insieme di dati, in un bilancio personale dell'anno.

Com'è stato il vostro anno? Quanto avete speso? Che tipo di musica avete ascoltato di più? Quanti allenamenti avete completato o quanti film avete visto?

Tutte queste informazioni esistono già nella vostra vita digitale. L'applicazione bancaria tiene traccia delle spese, Spotify conserva la cronologia degli ascolti e il fitness tracker registra ogni corsa. L'unica cosa che manca è la vostra analisi, che racconti la storia che vi interessa.

È qui che entra in gioco SQL. Con poche semplici query, è possibile riassumere un intero anno di dati personali - che si tratti di budget, playlist o allenamenti - e scoprire le informazioni che la maggior parte delle app non mostra mai. Anche se non siete professionisti di SQL, non è troppo tardi per iniziare. Siamo a ottobre, il momento perfetto per imparare l'SQL e prepararsi a creare il proprio "anno dei dati" prima che questo finisca.

Non sapete da dove cominciare? Iniziate con il nostro SQL per principianti oltre 100 esercizi pratici progettati per aiutarvi a costruire vere competenze in SQL fin dal primo giorno. Ogni lezione è interattiva, in modo che possiate acquisire rapidamente sicurezza e iniziare a scrivere le vostre query in poco tempo.

In questo articolo, utilizzeremo un set di dati fittizio sull'allenamento per mostrare come SQL vi aiuti a trovare la vostra distanza totale, il vostro mese migliore, il vostro giorno più attivo e persino i vostri record personali. Una volta comprese le basi, è possibile applicare le stesse idee a qualsiasi tipo di dati.

Ecco il vostro set di dati: Un semplice tracker di allenamento

Per rendere le cose più pratiche, lavoriamo con un piccolo set di dati simile a Strava, che potete facilmente creare da soli. Immaginate una tabella chiamata allenamenti, in cui ogni riga rappresenta un'attività del vostro anno: una corsa, un giro in bicicletta o una nuotata.

Ecco come appare:

dateactivity_typedistance_kmduration_minavg_speed_kmhelevation_mcalorieslocation
2025-01-05Run8.44210.045430London
2025-02-10Ride42.511023.1120890London
2025-03-07Run10.45210.555600London
2025-04-12Ride38.29823.3210850Surrey Hills
2025-05-03Run5.83010.630360London

La maggior parte degli allenamenti è avvenuta vicino a casa, a Londra, con qualche occasionale corsa più lunga fuori città. Ogni colonna racconta parte della vostra storia: quando vi siete allenati, che tipo di attività era, quanto avete fatto, quanto tempo avete impiegato e persino dove è avvenuta. È il tipo di informazioni che l'orologio o l'app raccolgono automaticamente: serve solo un modo per leggerle.

È qui che SQL brilla. Eseguendo alcune semplici query, è possibile trasformare questi dati grezzi in un riepilogo dell'intero anno: quanto avete fatto, in quale mese siete stati più attivi e quali sono stati i vostri record personali.

Cominciamo a vedere i totali annuali.

Fase 1 - Il riepilogo annuale

Cominciamo con il quadro generale. Prima di entrare nei dettagli, è utile sapere quanta strada avete percorso quest'anno: la distanza totale, il tempo di allenamento totale e il numero di allenamenti completati.

Con SQL è possibile ottenere tutto questo in un'unica query:

SELECT 
  SUM(distance_km) AS total_distance, 
  SUM(duration_min) AS total_duration, 
  COUNT(*) AS total_sessions 
FROM workouts 
WHERE EXTRACT(YEAR FROM date)=2025;

Questa query fornisce un rapido riepilogo dell'anno. Si potrebbe scoprire qualcosa di simile:

  • Distanza totale: 405 km
  • Tempo totale: 1.200 minuti (cioè 20 ore!)
  • Totale sessioni: 42 allenamenti

È un'istantanea soddisfacente del vostro impegno - il vostro intero anno, condensato in tre numeri.

Se volete imparare a scrivere query come questa, date un'occhiata al nostro SQL per principianti corso. Include un'intera sezione sulla creazione di semplici statistiche, che vi aiuterà a prendere confidenza con la pratica dell'SQL.

Questa panoramica ha però una piccola limitazione: combina tutto insieme. Se la tabella include corse, passeggiate o nuotate, queste attività hanno distanze e velocità molto diverse. La loro somma non fornisce un quadro completo della situazione.

Ecco perché il passo successivo consiste nel suddividere le statistiche per tipo di attività.

Fase 2 - Statistiche per tipo di attività

Una corsa di 40 km e una di 10 km non appartengono allo stesso gruppo: le distanze in bicicletta sono naturalmente più elevate, mentre la corsa richiede più tempo per chilometro. Per capire veramente il vostro sforzo, dovete separare i dati per tipo di attività.

Ecco come fare:

SELECT 
  activity_type, 
  SUM(distance_km) AS total_distance, 
  ROUND(AVG(distance_km),1) AS avg_distance, 
  ROUND(AVG(avg_speed_kmh),1) AS avg_speed, 
  COUNT(*) AS total_sessions 
FROM workouts 
GROUP BY activity_type 
ORDER BY total_distance DESC;

Questa query raggruppa i dati per ogni attività e mostra:

  • quanto avete percorso in totale,
  • la durata media della sessione
  • la velocità media e
  • quante volte ci si è allenati.

Si potrebbe vedere qualcosa di simile:

activity_typetotal_distanceavg_distanceavg_speedtotal_sessions
Ride310.538.922.88
Run102.38.510.912

Ora i dati raccontano una storia più completa. Forse avete pedalato più a lungo in generale, ma avete corso più spesso. O forse il vostro ritmo medio di corsa è migliorato rispetto alle vostre corse.

È qui che l'SQL diventa un vero e proprio strumento di analisi, aiutandovi a vedere le differenze, non solo i totali.

Per capire come funzionano query come questa e per esercitarsi a costruirne di proprie, è possibile seguire il nostro corso SQL per principianti corso. È ricco di esercizi interattivi che vi guidano passo dopo passo attraverso gli elementi essenziali, in modo che possiate imparare rapidamente a raggruppare, filtrare e riassumere i vostri dati con sicurezza.

Quindi, vediamo di approfondire l'analisi dell'andamento delle vostre prestazioni mese per mese.

Fase 3 - Statistiche mensili per attività

Dopo aver visto i totali complessivi e per attività, il passo successivo è capire come si è evoluto l'allenamento mese per mese. SQL facilita questo compito grazie alla funzione DATE_TRUNC(), che consente di raggruppare i dati in base a un periodo di tempo specifico, ad esempio un mese.

Ecco la query

SELECT
    DATE_TRUNC('month', date) AS month,
    activity_type,
    COUNT(*) AS sessions,
    SUM(distance_km) AS total_distance,
    ROUND(AVG(distance_km), 1) AS avg_distance,
    ROUND(AVG(avg_speed_kmh), 1) AS avg_speed,
    MAX(distance_km) AS longest_distance
FROM workouts
GROUP BY month, activity_type
ORDER BY month, activity_type;

Quando si scrive DATE_TRUNC('month', date), SQL "arrotonda" ogni data al primo giorno del mese. Quindi, tutti gli allenamenti di gennaio saranno raggruppati sotto 2025-01-01, febbraio sotto 2025-02-01 e così via. In questo modo è possibile riepilogare i dati di ogni mese nel set di dati.

Nota: La funzione DATE_TRUNC() funziona in PostgreSQL, Snowflake, Redshift e BigQuery. Altri database utilizzano una sintassi diversa:

  • MySQL: DATE_FORMAT(date, '%Y-%m-01')
  • SQL Server: DATEFROMPARTS(YEAR(date), MONTH(date), 1)
  • SQLite: strftime('%Y-%m-01', date)

Se volete saperne di più su come lavorare con le funzioni di data e ora, esplorate il nostro corso Funzioni SQL standard o uno dei suoi equivalenti per MySQL, PostgreSQLo SQL Server. Ogni versione insegna come utilizzare funzioni come queste nel database con cui si lavora ogni giorno.

La query mostra, per ogni attività e mese:

  • quante sessioni avete completato,
  • la distanza totale,
  • la distanza media,
  • la velocità media e
  • l'allenamento più lungo del mese.

Risultati di esempio:

monthactivity_typesessionstotal_distanceavg_distanceavg_speedlongest_distance
2025-01-01Run430.57.610.810.2
2025-01-01Ride270.035.021.938.5
2025-02-01Run327.49.111.010.4
2025-02-01Ride3105.035.022.142.5
2025-03-01Run328.09.311.210.4
2025-03-01Ride4140.035.023.045.0
2025-04-01Run216.88.410.99.0
2025-04-01Ride4150.037.523.145.2

Con questa query è possibile vedere come sono cambiate le prestazioni nel corso dell'anno: quando ci si è allenati più spesso, quando le distanze hanno raggiunto il massimo e come si è evoluto il ritmo medio.

Poi analizziamo i vostri record personali, ovvero i singoli allenamenti che si sono distinti dagli altri.

Fase 4 - Punti salienti e record personali

Dopo aver visto i vostri progressi mensili, passiamo alla parte più gratificante: i vostri record personali. Ogni atleta ama conoscere i propri allenamenti più lunghi, più veloci o più difficili, e SQL può trovarli in pochi secondi.

Cominciamo con la corsa più lunga e la corsa più lunga.

SELECT *
FROM workouts
WHERE distance_km = (
    SELECT MAX(distance_km)
    FROM workouts
    WHERE activity_type = 'Ride'
);

È possibile ripetere la stessa query per le corse, basta cambiare 'Ride' in 'Run'. Questa sottoquery trova la distanza massima per ogni tipo di attività e restituisce i dettagli completi dell'allenamento, in modo da poter vedere quando e dove si è verificato il record.

Per saperne di più su come funzionano le subquery e su come utilizzarle per confrontare, filtrare o calcolare i valori, si consiglia di consultare la sezione Subquery SQL è il nostro corso sulle subquery SQL. È un modo pratico per esercitarsi a scrivere query all'interno di altre query, utilizzando insiemi di dati reali simili a questo.

Allo stesso modo, è possibile trovare l'allenamento più veloce (in base alla velocità media):

SELECT *
FROM workouts
WHERE avg_speed_kmh = (
    SELECT MAX(avg_speed_kmh)
    FROM workouts
    WHERE activity_type = 'Run'
);

È possibile utilizzare questa struttura anche per altre metriche: l'altitudine più elevata, la durata più lunga, le calorie bruciate o persino il mese più importante.

I record personali sono un modo divertente per concludere l'analisi. Danno all'anno una serie di punti salienti, gli allenamenti che ricorderete di più quando vi guarderete indietro.

Concludiamo con un'ultima prospettiva: quando vi allenate di più, ovvero le vostre abitudini nel giorno della settimana.

Fase 5 - Statistiche sui giorni della settimana

Ognuno di noi ha delle abitudini di allenamento: magari si va sempre in bici nei fine settimana o si fanno brevi corse durante la settimana. SQL può scoprire questi schemi con una semplice query.

SELECT
    EXTRACT(DOW FROM date) AS weekday_number,
    CASE EXTRACT(DOW FROM date)
        WHEN 0 THEN 'Sunday'
        WHEN 1 THEN 'Monday'
        WHEN 2 THEN 'Tuesday'
        WHEN 3 THEN 'Wednesday'
        WHEN 4 THEN 'Thursday'
        WHEN 5 THEN 'Friday'
        WHEN 6 THEN 'Saturday'
    END AS weekday,
    activity_type,
    COUNT(*) AS sessions,
    ROUND(AVG(distance_km), 1) AS avg_distance
FROM workouts
GROUP BY weekday_number, weekday, activity_type
ORDER BY (CASE WHEN weekday_number = 0 THEN 7 ELSE weekday_number END), activity_type;

La funzione EXTRACT(DOW FROM date) restituisce il giorno della settimana come numero (da0 per la domenica a 6 per il sabato). L'istruzione CASE converte questi numeri in nomi leggibili e l'istruzione finale ORDER BY assicura che i giorni appaiano da lunedì a domenica.

Se volete esercitarvi a usare insieme le espressioni CASE e le funzioni di data, come in questa query, date un'occhiata al nostro corso Come creare semplici report SQL corso. Il corso mostra come combinare questi strumenti per raggruppare, etichettare e riassumere i dati in modo efficace, aiutandovi a creare, passo dopo passo, report puliti e ricchi di informazioni.

Risultati di esempio:

weekday_numberweekdayactivity_typesessionsavg_distance
1MondayRun27.8
3WednesdayRun39.0
5FridayRide232.5
6SaturdayRide438.0
0SundayRun210.2

Da questa tabella è possibile vedere immediatamente il proprio ritmo: corse nei giorni feriali, corse nel fine settimana o magari uno schema di recupero intermedio.

Questa query finale completa il vostro "anno di dati": ora conoscete i vostri totali annuali, i risultati di ogni tipo di attività, quando avete raggiunto il vostro picco, i vostri record personali e come la vostra routine settimanale ha influenzato l'intero anno.

Il vostro anno, i vostri dati

Se vi è piaciuto esplorare questo semplice set di dati sull'allenamento, immaginate cosa potreste fare con i vostri dati, dalle abitudini di spesa alla cronologia dello streaming. È ottobre, il momento perfetto per iniziare a imparare l'SQL e creare il proprio riepilogo annuale prima della fine dell'anno.

Avete appena visto come alcune semplici query SQL possono trasformare i dati grezzi in veri e propri approfondimenti. Con SUM, AVG, GROUP BY e alcune funzioni di aiuto, avete costruito un riepilogo completo del vostro anno: totali, tendenze mensili, record personali e persino la vostra routine settimanale.

E questo solo per un set di dati: i vostri allenamenti. Lo stesso approccio funziona per quasi tutto ciò che si tiene sotto controllo:

  • il vostro bilancio personale (spese totali, medie mensili, categorie di spesa più importanti),
  • il vostro calendario (quante riunioni avete avuto, quando siete più impegnati),
  • o le statistiche di Spotify (artisti più ascoltati, canzoni al mese, tempo totale di ascolto).

Una volta compreso come porre domande con SQL, è possibile analizzare qualsiasi aspetto della propria vita o del proprio lavoro che lasci una traccia di dati.

Se volete imparare a farlo in modo corretto, passo dopo passo e con la pratica, iniziate con LearnSQL.it. Il Completo per sempre Piano SQL vi dà accesso a vita a tutti i nostri corsi, in modo che possiate passare da principianti ad analisti esperti al vostro ritmo. È ottobre, il momento perfetto per iniziare a imparare e preparare il vostro "anno dei dati".

Con il Completo per sempre Piano SQLsi sbloccano tutti i corsi attuali e futuri a un unico prezzo, senza abbonamenti né rinnovi. Avrete a disposizione percorsi da principiante ad avanzato (nozioni di base, query, subquery, join, funzioni finestra, reporting), tracce di pratica con set di dati reali, esercizi interattivi e certificati. Imparate al vostro ritmo, rivedete le lezioni in qualsiasi momento e continuate a sviluppare le vostre competenze su argomenti come l'analisi, il reporting e la preparazione dei dati, il tutto con un unico piano.