5th Sep 2025 Lectura de 9 minutos Minitutorial: Analiza datos meteorológicos reales en SQL y encuentra la mejor época para viajar LearnSQL.es Team análisis de datos Índice ¿Busca sol y poca lluvia? Primeros pasos: Cargar el conjunto de datos meteorológicos Paso a Paso: Análisis de los Datos Meteorológicos en SQL Comience por Explorar los Datos ¿Cuál es la temperatura media en Szeged? ¿En qué mes hace más calor en Szeged? ¿Cuáles son los tipos de tiempo más comunes? ¿Con qué frecuencia llueve cada mes? ¿Qué días fueron fríos y ventosos? Reto: ¿Cuál fue la temperatura más alta jamás registrada? Pruébalo con otras ciudades ¿Buscas el momento perfecto para irte de vacaciones? Con unas pocas consultas SQL y datos meteorológicos reales de Szeged, Hungría, puedes averiguar qué meses son calurosos, lluviosos o ideales para pasear al sol. Este minitutorial es una forma práctica y divertida de perfeccionar tus conocimientos de SQL y, de paso, planificar tu próximo viaje. ¿Busca sol y poca lluvia? Planificar unas vacaciones no consiste sólo en elegir un destino. También es cuestión de tiempo: ¿cuándo hace buen tiempo? Con unas pocas consultas SQL, puede responder a preguntas como: ¿Cuál es el mes más caluroso en una ciudad? ¿Cuándo llueve con más frecuencia? ¿Son frecuentes los días ventosos en primavera? En este tutorial, trabajarás con datos meteorológicos históricos reales de Szeged, Hungría, y practicarás habilidades SQL esenciales como SELECT, GROUP BY, HAVING y ORDER BY. Se trata de un miniproyecto práctico que combina la práctica del mundo real con un poco de curiosidad viajera. ¿Quieres repasar primero los conceptos básicos? Prueba el curso de SQL para principiantes en LearnSQL.es- es fácil de aprender, interactivo y enseña todo lo que necesitas para seguir este tutorial. También puede adaptar estas consultas para analizar el tiempo en otros lugares. API del tiempo histórico ¿Busca datos de otros lugares? La API de meteor ología histórica de Open-Meteo es un gran recurso gratuito para descargar el historial meteorológico por ciudad o coordenada. SQL no es sólo para informes y cuadros de mando, puede incluso ayudarle a planificar sus próximas vacaciones. Vamos a ello. Primeros pasos: Cargar el conjunto de datos meteorológicos Utilizaremos un conjunto de datos público Weather in Szeged 2006-2016 de Kaggle, que contiene datos meteorológicos diarios de 2006 a 2016. Descarga los datos: Visita la página de Kaggle y descarga el archivo weatherHistory.csv Prepare el archivo para la importación. Para importarlo a una base de datos de tu elección, necesitas: Eliminar la dirección +01:00 de Formatted Date. Puedes utilizar la función Buscar y reemplazar de tu editor. Cambiar el nombre de las cabeceras para utilizar guiones bajos en lugar de espacios. Puede editar el archivo con Excel, el Bloc de notas o cualquier editor de texto. Aquí está la fila de encabezado limpiada: formatted_date,summary,precip_type,temperature_c,apparent_temperature_c,humidity,wind_speed_kmh,wind_bearing_deg,visibility_km,pressure_mb,daily_summary Cree la tabla en su base de datos 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 ); Importe el archivo CSV En PostgreSQL COPY szeged_weather FROM '/path/to/weatherHistory.csv' DELIMITER ',' CSV HEADER; o en MySQL: LOAD DATA INFILE '/path/to/weatherHistory.csv' INTO TABLE szeged_weather FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; Asegúrese de que su base de datos está configurada para permitir la importación de archivos. Paso a Paso: Análisis de los Datos Meteorológicos en SQL Comience por Explorar los Datos Antes de sumergirse en el análisis, es útil comprender con qué tipo de datos está trabajando. Veamos algunas filas del conjunto de datos. Consulta SQL SELECT * FROM szeged_weather LIMIT 5; Ejemplo de salida 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 Cómo funciona SELECT * devuelve todas las columnas - útil para un primer vistazo. LIMIT 5 devuelve sólo las 5 primeras filas. Mantiene la salida manejable y no satura la base de datos. Lo que acaba de practicar Vista previa de la estructura de datos Exploración de las columnas disponibles Confirmación del formato y tipos de datos ¿Es nuevo en SQL? El curso SQL para principiantes en LearnSQL.es te guía a través de estos primeros pasos de forma interactiva - perfecto si estás empezando. Qué significa esto para usted Verá columnas como formatted_date, temperature_c, wind_speed_kmh, y summary. Esto te da un contexto de lo que es posible - y qué campos puedes filtrar o agrupar más tarde. ¿Cuál es la temperatura media en Szeged? Empecemos con algo sencillo: la temperatura media de todo el conjunto de datos. Consulta SQL SELECT ROUND(AVG(temperature_c), 1) AS avg_temp FROM szeged_weather; Ejemplo de salida avg_temp 14.6 Cómo funciona AVG() calcula el valor medio. ROUND(..., 1) facilita la lectura mostrando sólo un decimal. Lo que Acaba de Practicar Agregación básica con AVG() Formateo de salida numérica Obtención de un número a gran escala a partir de datos sin procesar ¿Quieres dominar las funciones SQL? Echa un vistazo a la Funciones estándar de SQL curso sobre LearnSQL.es - cubre AVG(), SUM(), MIN(), MAX(), y más, con ejercicios prácticos y casos de uso reales Lo que esto significa para usted El resultado indica la temperatura media diaria en Szeged durante todo el periodo de 10 años. Esto es útil como punto de referencia - más tarde, puede comparar meses o días específicos con esta línea de base. ¿En qué mes hace más calor en Szeged? Está buscando días cálidos y soleados, quizá para visitar los mercados locales, pasear junto al río o simplemente para no tener que llevar abrigo. Averigüemos qué mes tiene la temperatura media más alta en Szeged. Consulta 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; Ejemplo de resultado 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 Cómo funciona EXTRACT(MONTH FROM ...) extrae el mes de cada fecha. AVG(temperature_c) calcula la temperatura media mensual. ROUND(..., 1) le da formato a un decimal. GROUP BY y ORDER BY estructura los resultados para facilitar la comparación. Lo que acaba de practicar Agregación con AVG() Trabajar con partes de fechas utilizando EXTRACT() Agrupación y ordenación de resultados de consultas ¿Quieres más práctica estructurada? Pruebe la Práctica de SQL Group BY en LearnSQL.es. Este curso para principiantes se centra en el uso de GROUP BY con funciones agregadas como AVG(), SUM(), MIN(), y COUNT() en diferentes escenarios y conjuntos de datos. Es perfecto para reforzar lo que acaba de practicar en un formato interactivo. Lo que esto significa para usted Julio es el mes más cálido en Szeged, seguido de cerca por agosto. Mayo y septiembre son templados y buenos para quienes prefieren un clima confortable. Evite los meses de enero a marzo si desea disfrutar de días cálidos. ¿Cuáles son los tipos de tiempo más comunes? Veamos qué tipo de tiempo es más probable que experimente, basándonos en la columna resumen. Consulta SQL SELECT summary, COUNT(*) AS occurrences FROM szeged_weather GROUP BY summary ORDER BY occurrences DESC LIMIT 10; Ejemplo de salida 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 Cómo funciona COUNT(*) calcula la frecuencia con la que aparece cada resumen. GROUP BY summary agrupa valores idénticos. ORDER BY ... DESC y LIMIT ayudan a centrarse en los 10 tipos de tiempo principales. Lo que acaba de practicar Análisis de frecuencia con COUNT(*) Ordenación descendente de resultados Limitación de la salida con LIMIT Qué significa esto para usted "Parcialmente nublado" es muy común, por lo que puede esperar cielos mixtos. Si sus vacaciones perfectas requieren sol constante, compruebe con qué frecuencia aparece "Despejado". ¿Con qué frecuencia llueve cada mes? El clima cálido es estupendo, pero no si llueve constantemente. Averigüemos con qué frecuencia llueve en Szeged cada mes - no sólo la precipitación total, sino cuántas horas suelen incluir lluvia. Cada fila de este conjunto de datos representa una hora de tiempo. Así, cuando calculamos los porcentajes de lluvia, estamos respondiendo: "De todas las horas de un mes determinado, ¿cuántas tuvo lluvia?". Consulta 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; Ejemplo de resultado 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 Cómo funciona EXTRACT(MONTH FROM formatted_date) nos da el número de mes (1-12) LOWER(summary) se asegura de que coincidan palabras como "Rain" o "rain CASE WHEN ... THEN 1 ELSE 0 END comprueba cada fila: Si contiene "lluvia" → volver 1 Si no → volver 0 SUM(...) suma todos los 1s - ese es el número de horas de lluvia en ese mes COUNT(*) nos da el total de horas del mes Dividimos, multiplicamos por 100 y redondeamos el resultado para obtener un porcentaje limpio Lo que acabas de practicar Uso de EXTRACT() para agrupar datos por mes Aplicación de un contador condicional con CASE WHEN en su interior SUM() Hacer que las búsquedas de texto no distingan entre mayúsculas y minúsculas con LOWER() Cálculo de porcentajes a partir de datos agrupados Formateo de números con ROUND() ¿Quieres perfeccionar estos conocimientos? Consulte el Cómo crear informes básicos con SQL en LearnSQL.es. Este curso interactivo explica cómo utilizar funciones de agregación (AVG(), COUNT(), SUM()), clasificar datos con CASE WHEN y crear informes sencillos con GROUP BY. Está pensado para principiantes, con escenarios reales y más de 90 ejercicios prácticos para reforzar lo aprendido. Lo que esto significa para usted Si estás planeando unas vacaciones, esto te da una idea real: Junio tiene una mayor probabilidad de lluvia: alrededor del 25% de todas las horas. Agosto es más seguro, con menos horas de lluvia Utiliza este método también con otras condiciones: nieve, niebla o tiempo soleado. Basta con cambiar una palabra en la cláusula LIKE. ¿Qué días fueron fríos y ventosos? Algunas condiciones meteorológicas no aparecen en las medias mensuales. Busquemos los días en los que hizo frío y viento, condiciones que hacen que estar al aire libre resulte incómodo. Consulta 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; Muestra de resultados 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 Cómo funciona WHERE filtra las filas que cumplen ambas condiciones: frío y viento. ORDER BY temperature_c Las enumera de más frío hacia arriba. Lo que acaba de practicar Múltiples condiciones en un filtro Operadores lógicos (AND) Ordenar por columnas específicas Lo que esto significa para usted Estos días son raros pero duros. La mayoría caen entre noviembre y marzo. Esto apoya la idea de que Szeged no es ideal para viajar en invierno. Reto: ¿Cuál fue la temperatura más alta jamás registrada? Aquí tienes la oportunidad de aplicar lo que has aprendido. ¿Puedes encontrar la hora más calurosa de todo el conjunto de datos de Szeged? Tarea SQL Necesitarás MAX(temperature_c) encontrar el valor más alto registrado ORDER BY temperature_c DESC ordenar los datos LIMIT 1 obtener sólo la hora más calurosa O utilizar una subconsulta para obtener tanto la temperatura como la fecha en que se produjo. Te dejamos la consulta a ti. Pruébala y descubre a qué temperaturas extremas se ha enfrentado Szeged en verano. Pruébalo con otras ciudades ¿Y lo mejor? Estas consultas funcionan en cualquier lugar. Tanto si tienes curiosidad por saber cuál es el mes más ventoso en Varsovia como la estación más soleada en Sídney, sólo tienes que cargar un conjunto de datos meteorológicos históricos en SQL y empezar a explorar. No sólo está practicando, está descubriendo. Datos reales. Preguntas reales. Respuestas reales. Y puede que incluso su próximo lugar de vacaciones. ¿Desea perfeccionar sus conocimientos de SQL? LearnSQL.es le ofrece cursos prácticos e interactivos en los que podrá escribir y ejecutar SQL en su navegador. Comience con el curso SQL para principiantes y siga avanzando a partir de ahí. Tags: análisis de datos