5th Sep 2025 10 minutos de leitura Mini-tutorial: Analisar dados meteorológicos reais em SQL e encontrar a melhor época para viajar LearnSQL.com.br Team análise de dados Índice Procurando por sol e pouca chuva? Primeiros passos: Carregar o conjunto de dados meteorológicos Passo a passo: Análise dos dados meteorológicos no SQL Comece explorando os dados Qual é a temperatura média em Szeged? Qual mês é mais quente em Szeged? Quais são os tipos de clima mais comuns? Com que frequência chove a cada mês? Quais dias foram frios e ventosos? Desafio: Qual foi a temperatura mais quente já registrada? Experimente com outras cidades Está procurando a época perfeita para tirar férias? Com apenas algumas consultas SQL e dados meteorológicos reais de Szeged, Hungria, você pode descobrir quais meses são quentes, chuvosos ou ótimos para uma caminhada ao sol. Este minitutorial é uma maneira divertida e prática de aprimorar suas habilidades em SQL - e talvez planejar sua próxima viagem enquanto faz isso. Procurando por sol e pouca chuva? Planejar as férias não é apenas escolher um destino. É também uma questão de tempo - quando o tempo está realmente agradável? Com apenas algumas consultas SQL, você pode responder a perguntas como: Qual é o mês mais quente em uma cidade? Quando chove com mais frequência? Os dias de vento são comuns na primavera? Neste tutorial, você trabalhará com dados meteorológicos históricos reais de Szeged, na Hungria, e praticará habilidades essenciais de SQL, como SELECT, GROUP BY, HAVING e ORDER BY. É um miniprojeto prático que combina a prática do mundo real com um pouco de curiosidade sobre viagens. Deseja se familiarizar com os conceitos básicos primeiro? Experimente o cursoSQL para Iniciantes em LearnSQL.com.br- ele é amigável para iniciantes, interativo e ensina tudo o que você precisa para seguir este tutorial. Você também pode adaptar essas consultas para analisar o clima em outros locais. API de clima histórico Procurando dados de outros locais? A API de clima histórico do Open-Meteo é um ótimo recurso gratuito para baixar o histórico do clima por cidade ou coordenada. O SQL não serve apenas para relatórios e painéis - ele pode até mesmo ajudá-lo a planejar suas próximas férias. Vamos nos aprofundar no assunto. Primeiros passos: Carregar o conjunto de dados meteorológicos Usaremos um conjunto de dados público Weather in Szeged 2006-2016 do Kaggle, que contém dados meteorológicos diários de 2006 a 2016. Baixe os dados: Visite a página do Kaggle e baixe o arquivoweatherHistory.csv Prepare o arquivo para importação. Para importar esse arquivo para um banco de dados de sua escolha, é necessário: Remover o +01:00 do Formatted Date. Você pode usar a função Pesquisar e Substituir do seu editor para fazer isso. Renomear os cabeçalhos para usar sublinhados em vez de espaços Você pode editar o arquivo usando o Excel, o Bloco de Notas ou qualquer editor de texto. Aqui está a linha de cabeçalho limpa: formatted_date,summary,precip_type,temperature_c,apparent_temperature_c,humidity,wind_speed_kmh,wind_bearing_deg,visibility_km,pressure_mb,daily_summary Crie a tabela em seu banco de dados 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 ); Importar o arquivo CSV No PostgreSQL: COPY szeged_weather FROM '/path/to/weatherHistory.csv' DELIMITER ',' CSV HEADER; ou no MySQL: LOAD DATA INFILE '/path/to/weatherHistory.csv' INTO TABLE szeged_weather FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; Certifique-se de que seu banco de dados esteja configurado para permitir a importação de arquivos. Passo a passo: Análise dos dados meteorológicos no SQL Comece explorando os dados Antes de se aprofundar na análise, é útil entender com que tipo de dados você está trabalhando. Vamos visualizar algumas linhas do conjunto de dados. Consulta SQL SELECT * FROM szeged_weather LIMIT 5; Exemplo de saída 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 Como isso funciona SELECT * retorna todas as colunas - útil para uma primeira olhada. LIMIT 5 retorna apenas as primeiras 5 linhas. Isso mantém o resultado gerenciável e não sobrecarrega o banco de dados. O que você acabou de praticar Visualização da estrutura de dados Verificação das colunas disponíveis Confirmação do formato e dos tipos de dados Novo no SQL? O cursoSQL para Iniciantes em LearnSQL.com.br orienta você nessas primeiras etapas de forma interativa - perfeito se você está apenas começando. O que isso significa para você Você verá colunas como formatted_date, temperature_c, wind_speed_kmh e summary. Isso lhe dá um contexto do que é possível e de quais campos você pode filtrar ou agrupar posteriormente. Qual é a temperatura média em Szeged? Vamos começar com algo simples: a temperatura média em todo o conjunto de dados. Consulta SQL SELECT ROUND(AVG(temperature_c), 1) AS avg_temp FROM szeged_weather; Exemplo de saída avg_temp 14.6 Como isso funciona AVG() calcula o valor médio. ROUND(..., 1) facilita a leitura mostrando apenas uma casa decimal. O que você acabou de praticar Agregação básica com AVG() Formatação de saída numérica Obtenção de um número geral a partir de dados brutos Deseja dominar as funções SQL? Dê uma olhada no Funções Comuns em SQL em LearnSQL.com.br - ele aborda AVG(), SUM(), MIN(), MAX() e muito mais, com exercícios práticos e casos reais de uso O que isso significa para você O resultado informa a temperatura média diária em Szeged durante todo o período de 10 anos. Isso é útil como ponto de referência - posteriormente, você poderá comparar meses ou dias específicos com essa linha de base. Qual mês é mais quente em Szeged? Você está procurando dias quentes e ensolarados - talvez para visitar os mercados locais, fazer uma caminhada à beira do rio ou simplesmente evitar levar um casaco. Vamos descobrir qual mês tem a temperatura média mais alta em 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; Exemplo de saída 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 Como isso funciona EXTRACT(MONTH FROM ...) extrai o mês de cada data. AVG(temperature_c) calcula a temperatura média mensal. ROUND(..., 1) formata-a em uma casa decimal. GROUP BY e ORDER BY estrutura os resultados para facilitar a comparação. O que você acabou de praticar Agregação com AVG() Trabalho com partes de datas usando EXTRACT() Agrupamento e classificação de resultados de consultas Deseja praticar de forma mais estruturada? Experimente a Prática de SQL Group BY em LearnSQL.com.br. Esse curso de nível iniciante concentra-se no uso de GROUP BY com funções agregadas como AVG(), SUM(), MIN() e COUNT() em diferentes cenários e conjuntos de dados. Ele é perfeito para reforçar o que você acabou de praticar em um formato interativo. O que isso significa para você Julho é o mês mais quente em Szeged, seguido de perto por agosto. Maio e setembro são amenos e bons para aqueles que preferem um clima confortável. Evite os meses de janeiro a março se estiver esperando dias quentes. Quais são os tipos de clima mais comuns? Vamos ver que tipo de clima é mais provável de ocorrer, com base na coluna de resumo. Consulta SQL SELECT summary, COUNT(*) AS occurrences FROM szeged_weather GROUP BY summary ORDER BY occurrences DESC LIMIT 10; Exemplo de saída 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 Como isso funciona COUNT(*) registra a frequência com que cada resumo aparece. GROUP BY summary agrupa valores idênticos. ORDER BY ... DESC e LIMIT ajudam a focar nos 10 principais tipos de clima. O que você acabou de praticar Análise de frequência com COUNT(*) Classificação de resultados em ordem decrescente Limitação de resultados com LIMIT O que isso significa para você "Parcialmente nublado" é muito comum, portanto, você pode esperar um céu misto. Se suas férias perfeitas exigem sol constante, verifique com que frequência aparece "Clear" (claro). Com que frequência chove a cada mês? O clima quente é ótimo, mas não se estiver chovendo constantemente. Vamos descobrir com que frequência chove em Szeged a cada mês - não apenas a precipitação total, mas quantas horas normalmente incluem chuva. Cada linha desse conjunto de dados representa uma hora de clima. Portanto, quando calculamos as porcentagens de chuva, estamos respondendo: "De todas as horas em um determinado mês, quantas tiveram chuva?" 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; Exemplo de saída 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 Como isso funciona EXTRACT(MONTH FROM formatted_date) nos fornece o número do mês (1-12) LOWER(summary) garante a correspondência de palavras como "Rain" (chuva) ou "rain" (chuva) CASE WHEN ... THEN 1 ELSE 0 END verifica cada linha: Se ela contiver "rain" → retorno 1 Caso contrário → retorno 0 SUM(...) soma todos os 1s - esse é o número de horas de chuva naquele mês COUNT(*) nos dá o total de horas no mês Dividimos, multiplicamos por 100 e arredondamos o resultado para obter uma porcentagem limpa O que você acabou de praticar Usar EXTRACT() para agrupar dados por mês Aplicar um contador condicional com CASE WHEN dentro SUM() Fazer pesquisas de texto sem distinção entre maiúsculas e minúsculas com LOWER() Cálculo de porcentagens a partir de dados agrupados Formatação de números com ROUND() Deseja aprimorar ainda mais essas habilidades? Dê uma olhada no Como Criar Relatórios Básicos em SQL em LearnSQL.com.br. Esse curso interativo aborda como usar funções de agregação (AVG(), COUNT(), SUM()), classificar dados com CASE WHEN e criar relatórios simples usando GROUP BY. É fácil para iniciantes, com cenários do mundo real e mais de 90 exercícios práticos para reforçar o que você aprendeu. O que isso significa para você Se estiver planejando férias, isso lhe dará uma visão real: Junho tem uma chance maior de chuva - cerca de 25% de todas as horas Agosto é mais seguro, com menos horas de chuva Use essa abordagem com outras condições também - neve, neblina ou tempo ensolarado. Basta mudar uma palavra na cláusula LIKE. Quais dias foram frios e ventosos? Algumas condições climáticas não aparecem nas médias mensais. Vamos encontrar os dias que foram frios e ventosos - condições que tornam desconfortável estar ao ar livre. 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; Exemplo de saída 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 Como isso funciona WHERE filtra as linhas que atendem às duas condições: frio e vento. ORDER BY temperature_c lista-as da mais fria para a mais alta. O que você acabou de praticar Várias condições em um filtro Operadores lógicos (AND) Classificação por colunas específicas O que isso significa para você Esses dias são raros, mas rigorosos. A maioria cai entre novembro e março. Isso corrobora a ideia de que Szeged não é ideal para viagens de inverno. Desafio: Qual foi a temperatura mais quente já registrada? Aqui está uma chance de aplicar o que aprendeu. Você consegue encontrar a única hora mais quente em todo o conjunto de dados de Szeged? Tarefa SQL Você precisará: MAX(temperature_c) encontrar o maior valor registrado ORDER BY temperature_c DESC classificar os dados LIMIT 1 retornar apenas a hora mais quente Ou usar uma subconsulta para retornar a temperatura e a data em que isso aconteceu Deixaremos a consulta para você. Experimente, teste e veja que tipo de extremos de verão Szeged enfrentou! Experimente com outras cidades A melhor parte? Essas consultas funcionam em qualquer lugar. Se você está curioso para saber qual é o mês mais ventoso em Varsóvia ou a estação mais ensolarada em Sydney, basta carregar um conjunto de dados meteorológicos históricos no SQL e começar a explorar. Você não está apenas praticando - está descobrindo. Dados reais. Perguntas reais. Respostas reais. E talvez até mesmo seu próximo local de férias. Deseja aprimorar ainda mais suas habilidades em SQL? LearnSQL.com.br O site oferece cursos práticos e interativos nos quais você escreve e executa SQL em seu navegador. Comece com o cursoSQL para Iniciantes e continue a desenvolver a partir daí. Tags: análise de dados