Volver a la lista de artículos Artículos
Lectura de 10 minutos

Su año en datos: Cómo SQL le ayuda a resumir 12 meses de información

¿Alguna vez has querido analizar tu propio año como lo hace Spotify Wrapped? Con unas pocas consultas SQL, puedes convertir tus datos de entrenamiento -o cualquier conjunto de datos- en un resumen personal de tu año.

¿Cómo fue tu año? ¿Cuánto gastaste? ¿Qué tipo de música escuchaste más? ¿Cuántos entrenamientos has hecho o cuántas películas has visto?

Toda esa información ya existe en tu vida digital. Tu aplicación bancaria registra los gastos, Spotify guarda tu historial de escucha y tu monitor de fitness registra cada carrera. Lo único que falta es tu propio análisis, uno que cuente la historia que te interesa.

Ahí es donde entra SQL. Con unas sencillas consultas, puedes resumir todo un año de datos personales -ya sea tu presupuesto, listas de reproducción o entrenamientos- y descubrir información que la mayoría de las aplicaciones nunca te muestran. Aunque no seas un experto en SQL, no es tarde para empezar. Estamos en octubre, el momento perfecto para aprender SQL y prepararte para crear tu propio "año de datos" antes de que termine.

¿No sabe por dónde empezar? Empiece con nuestro SQL para principiantes con más de 100 ejercicios prácticos diseñados para ayudarle a desarrollar verdaderas habilidades SQL desde el primer día. Cada lección es interactiva, por lo que ganarás confianza rápidamente y empezarás a escribir tus propias consultas en un abrir y cerrar de ojos.

En este artículo, utilizaremos un conjunto de datos de entrenamiento ficticio para mostrar cómo SQL te ayuda a encontrar tu distancia total, tu mejor mes, tu día más activo e incluso tus récords personales. Una vez que entiendas los conceptos básicos, podrás aplicar las mismas ideas a cualquier tipo de datos que registres.

Conoce tu conjunto de datos: Un rastreador de entrenamiento sencillo

Para hacer las cosas más prácticas, vamos a trabajar con un pequeño conjunto de datos similar a Strava, algo que podrías crear fácilmente tú mismo. Imagina una tabla llamada entrenamientos, donde cada fila representa una actividad de tu año: una carrera, un paseo en bici o nadar.

Esto es lo que parece:

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 mayoría de los entrenamientos tuvieron lugar cerca de casa, en Londres, con algún que otro paseo más largo fuera de la ciudad. Cada columna cuenta parte de tu historia: cuándo entrenaste, qué tipo de actividad fue, qué distancia recorriste, cuánto tiempo te llevó e incluso dónde tuvo lugar. Es el tipo de información que tu reloj o tu aplicación recopilan automáticamente, sólo necesitas una forma de leerla.

Ahí es donde brilla SQL. Ejecutando unas sencillas consultas, puedes convertir estos datos brutos en un resumen de todo tu año: qué distancia recorriste, en qué mes estuviste más activo y cómo fueron tus récords personales.

Empecemos por ver tus totales anuales.

Paso 1 - Tu resumen anual

Empecemos por el panorama general. Antes de entrar en detalles, es útil saber cuánto terreno has cubierto este año: distancia total, tiempo total de entrenamiento y cuántos entrenamientos has completado.

Con SQL, puedes obtener todo eso en una sola consulta:

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;

Esta consulta te ofrece un resumen rápido de tu año. Podrías descubrir algo como esto

  • Distancia total: 405 km
  • Tiempo total: 1.200 minutos (¡20 horas!)
  • Sesiones totales: 42 entrenamientos

Es una instantánea satisfactoria de tu esfuerzo: todo tu año, condensado en tres números.

Si quieres aprender a escribir consultas como ésta, consulta nuestro SQL para principiantes curso. Incluye una sección completa sobre la creación de estadísticas sencillas, que te ayudará a ganar confianza con la práctica real de SQL.

Pero esta visión general tiene una pequeña limitación: combina todo junto. Si tu tabla incluye carreras, paseos o natación, esas actividades tienen distancias y velocidades muy diferentes. Sumarlas no da la historia completa.

Por eso el siguiente paso es desglosar las estadísticas por tipo de actividad.

Paso 2 - Estadísticas por tipo de actividad

Un paseo de 40 km y una carrera de 10 km no tienen cabida en el mismo cubo: las distancias en bicicleta son naturalmente mayores, mientras que correr requiere más tiempo por kilómetro. Para entender realmente tu esfuerzo, necesitas separar tus datos por tipo de actividad.

He aquí cómo hacerlo:

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;

Esta consulta agrupa tus datos por cada actividad y muestra:

  • la distancia total recorrida,
  • la duración media de la sesión,
  • la velocidad media y
  • cuántas veces entrenaste.

Podrías ver algo como esto

activity_typetotal_distanceavg_distanceavg_speedtotal_sessions
Ride310.538.922.88
Run102.38.510.912

Ahora tus datos cuentan una historia más completa. Tal vez hayas pedaleado más lejos en general, pero has corrido más a menudo. O puede que tu ritmo medio de carrera haya mejorado en comparación con tus salidas.

Aquí es donde SQL se convierte en una verdadera herramienta de análisis: te ayuda a ver las diferencias, no sólo los totales.

Si quieres entender cómo funcionan este tipo de consultas y practicar la creación de las tuyas propias, empieza con nuestro curso SQL para principiantes curso. Está repleto de ejercicios interactivos que le guiarán paso a paso por los conceptos básicos, para que pueda aprender rápidamente a agrupar, filtrar y resumir sus datos con confianza.

A continuación, vamos a profundizar y explorar cómo ha cambiado su rendimiento mes a mes.

Paso 3 - Estadísticas mensuales por actividad

Una vez que hayas visto tus totales generales y por actividad, el siguiente paso es entender cómo evolucionó tu entrenamiento mes a mes. SQL te lo pone fácil, por ejemplo, con la función DATE_TRUNC(), que te permite agrupar los datos por un período de tiempo específico, por ejemplo, por mes.

He aquí la consulta

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;

Cuando escribes DATE_TRUNC('month', date), SQL "redondea" cada fecha al primer día de su mes. Así, todos los entrenamientos de enero se agruparán en 2025-01-01, los de febrero en 2025-02-01, y así sucesivamente. Esto le ayuda a resumir los datos de cada mes en su conjunto de datos.

Nota: La función DATE_TRUNC() funciona en PostgreSQL, Snowflake, Redshift y BigQuery. Otras bases de datos utilizan una sintaxis diferente:

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

Si quieres aprender más sobre cómo trabajar con funciones de fecha y hora, explora nuestro Funciones estándar de SQL curso - o uno de sus homólogos para MySQL, PostgreSQLo SQL Server. Cada versión le enseña a utilizar funciones como éstas en la base de datos con la que trabaja a diario.

La consulta muestra, para cada actividad y mes

  • cuántas sesiones has completado,
  • tu distancia total,
  • tu distancia media,
  • la velocidad media y
  • el entrenamiento más largo del mes.

Ejemplo de resultados:

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 esta consulta, puedes ver cómo ha cambiado tu rendimiento a lo largo del año: cuándo has entrenado con más frecuencia, cuándo has alcanzado tus distancias máximas y cómo ha evolucionado tu ritmo medio.

A continuación, vamos a ver tus récords personales: los entrenamientos individuales que destacaron sobre el resto.

Paso 4 - Lo más destacado y los récords personales

Ahora que has visto tu progreso mensual, pasemos a la parte más gratificante: tus récords personales. A todos los atletas les encanta conocer sus entrenamientos más largos, rápidos o duros, y SQL puede encontrarlos en cuestión de segundos.

Empecemos con tu carrera más larga.

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

Puedes repetir la misma consulta para las carreras, sólo tienes que cambiar 'Ride' por 'Run'. Esta subconsulta encuentra la distancia máxima para cada tipo de actividad y devuelve los detalles completos del entrenamiento, para que puedas ver cuándo y dónde se produjo ese récord.

Si quieres saber más sobre el funcionamiento de las subconsultas y cómo utilizarlas para comparar, filtrar o calcular valores, consulta nuestra sección sobre Subconsultas SQL de SQL. Es una forma práctica de practicar la escritura de consultas dentro de otras consultas, utilizando conjuntos de datos del mundo real similares a éste.

Del mismo modo, puedes encontrar tu entrenamiento más rápido (basado en la velocidad media):

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

También puedes utilizar esta estructura para otras métricas: la mayor elevación, la mayor duración, la mayor cantidad de calorías quemadas o incluso tu mes más largo.

Estos récords personales son una forma divertida de terminar el análisis. Proporcionan a tu año una serie de momentos destacados, los entrenamientos que más recordarás cuando mires atrás.

A continuación, terminaremos con una última perspectiva: cuándo entrenas más - tus hábitos del día de la semana.

Paso 5 - Estadísticas del día de la semana

Todo el mundo tiene hábitos de entrenamiento - tal vez usted siempre monta en bicicleta los fines de semana o hace carreras cortas durante la semana. SQL puede descubrir estos patrones con una simple consulta.

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 función EXTRACT(DOW FROM date) devuelve el día de la semana como un número (0 para el domingo a 6 para el sábado). La sentencia CASE convierte esos números en nombres legibles, y la ORDER BY final se asegura de que los días aparezcan de lunes a domingo.

Si quieres practicar el uso conjunto de expresiones CASE y funciones de fecha, como en esta consulta, consulta nuestro curso Cómo crear informes básicos con SQL curso. En él se muestra cómo combinar estas herramientas para agrupar, etiquetar y resumir datos de forma eficaz, lo que le ayudará a crear informes claros y reveladores paso a paso.

Ejemplo de resultados:

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

A partir de esta tabla, puedes ver al instante tu ritmo: carreras entre semana, paseos de fin de semana, o tal vez un patrón de recuperación intermedio.

Esta consulta final completa tu "año en datos": ahora conoces tus totales anuales, el rendimiento de cada tipo de actividad, cuándo alcanzaste tu punto máximo, tus récords personales y cómo tu rutina semanal determinó todo el año.

Tu año, tus datos

Si te ha gustado explorar este sencillo conjunto de datos de entrenamiento, imagina lo que podrías hacer con tus propios datos, desde tus hábitos de gasto hasta tu historial de streaming. Estamos en octubre, el momento perfecto para empezar a aprender SQL y crear tu propio resumen anual antes de que acabe el año.

Acabas de ver cómo unas sencillas consultas SQL pueden convertir datos sin procesar en información real. Con SUM, AVG, GROUP BY, y algunas funciones de ayuda, has creado un resumen completo de tu año: totales, tendencias mensuales, registros personales e incluso tu rutina semanal.

Y esto era sólo un conjunto de datos: tus entrenamientos. El mismo enfoque funciona para casi cualquier cosa que registres:

  • tu presupuesto personal (gastos totales, medias mensuales, categorías de gasto más importantes),
  • tu calendario (cuántas reuniones has tenido, cuándo estás más ocupado),
  • o tus estadísticas de Spotify (artistas más escuchados, canciones al mes, tiempo total de escucha).

Una vez que sepas cómo hacer preguntas con SQL, podrás analizar cualquier aspecto de tu vida o de tu trabajo que deje un rastro de datos.

Si quieres aprender a hacerlo correctamente -paso a paso, con práctica- empieza por LearnSQL.es. El Todo, para siempre Plan SQL te da acceso de por vida a todos nuestros cursos, para que puedas pasar de principiante a analista seguro a tu propio ritmo. Es octubre: el momento perfecto para empezar a aprender y preparar tu propio "año en datos".

Con el Todo, para siempre Plan SQLdesbloquea todos los cursos actuales y futuros por un precio único, sin suscripciones ni renovaciones. Obtendrá rutas de principiante a avanzado (conceptos básicos, consultas, subconsultas, uniones, funciones de ventana, informes), pistas de práctica con conjuntos de datos reales, ejercicios interactivos y certificados. Aprenda a su ritmo, revise las lecciones en cualquier momento y siga desarrollando habilidades en temas como análisis, informes y preparación de datos, todo en un solo plan.