Retour à la liste des articles Articles
10 minutes de lecture

Mini-Tutoriel : Analyser des données météorologiques réelles en SQL et trouver la meilleure période pour voyager

Vous cherchez le moment idéal pour prendre des vacances ? Avec seulement quelques requêtes SQL et les données météorologiques réelles de Szeged, en Hongrie, vous pouvez déterminer les mois les plus chauds, les plus pluvieux ou les plus propices à une promenade au soleil. Ce mini-tutoriel est un moyen amusant et pratique d'affiner vos compétences en SQL et peut-être de planifier votre prochain voyage.

Vous cherchez du soleil et peu de pluie ?

Planifier des vacances ne consiste pas seulement à choisir une destination. C'est aussi une question de timing : quand le temps est-il vraiment agréable ?

Quelques requêtes SQL suffisent pour répondre à des questions telles que : Quel est le mois le plus chaud dans une ville ? Quand pleut-il le plus souvent ? Les jours de vent sont-ils fréquents au printemps ? Dans ce tutoriel, vous travaillerez avec des données météorologiques historiques réelles de Szeged, en Hongrie, et vous pratiquerez des compétences SQL essentielles telles que SELECT, GROUP BY, HAVING et ORDER BY. Il s'agit d'un mini-projet pratique qui combine la pratique du monde réel avec un peu de curiosité pour les voyages.

Vous voulez d'abord rafraîchir vos connaissances de base ? Essayez le cours SQL pour les débutants à l'adresse LearnSQL.fr- il s'adresse aux débutants, est interactif et enseigne tout ce dont vous avez besoin pour suivre ce tutoriel.

Vous pouvez également adapter ces requêtes pour analyser la météo dans d'autres lieux. API Météo historique

Vous recherchez des données provenant d'autres endroits ? L'API Open-Meteo Historical Weather est une excellente ressource gratuite pour télécharger l'historique des conditions météorologiques par ville ou par coordonnées.

SQL n'est pas seulement destiné aux rapports et aux tableaux de bord - il peut même vous aider à planifier vos prochaines vacances. Plongeons dans l'aventure.

Pour commencer : Chargement de l'ensemble de données météorologiques

Nous allons utiliser un jeu de données publiques Weather in Szeged 2006-2016 de Kaggle, qui contient des données météorologiques quotidiennes de 2006 à 2016.

  1. Téléchargez les données : Visitez la page Kaggle et téléchargez le fichierweatherHistory.csv.
  2. Préparez le fichier pour l'importation.

Pour importer ce fichier dans une base de données de votre choix, vous devez :

  • Supprimer le +01:00 du Formatted Date Vous pouvez utiliser la fonction Rechercher et Remplacer de votre éditeur pour le faire.
  • Renommer les en-têtes pour utiliser des traits de soulignement au lieu d'espaces.

Vous pouvez modifier le fichier à l'aide d'Excel, du Bloc-notes ou de n'importe quel éditeur de texte.

Voici la ligne d'en-tête nettoyée :

formatted_date,summary,precip_type,temperature_c,apparent_temperature_c,humidity,wind_speed_kmh,wind_bearing_deg,visibility_km,pressure_mb,daily_summary
  1. Créez la table dans votre base de données
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
);
  1. Importer le fichier CSV

Dans PostgreSQL :

COPY szeged_weather FROM '/path/to/weatherHistory.csv' DELIMITER ',' CSV HEADER;

ou dans MySQL :

LOAD DATA INFILE '/path/to/weatherHistory.csv' INTO TABLE szeged_weather
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

Assurez-vous que votre base de données est configurée pour permettre l'importation de fichiers.

Pas à pas : Analyse des données météorologiques en SQL

Commencez par explorer les données

Avant de plonger dans l'analyse, il est utile de comprendre avec quel type de données vous travaillez. Prévisualisons quelques lignes de l'ensemble de données.

Requête SQL

SELECT *
FROM szeged_weather
LIMIT 5;

Exemple de sortie

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

Comment cela fonctionne-t-il ?

  • SELECT * renvoie toutes les colonnes - utile pour un premier aperçu.
  • LIMIT 5 ne renvoie que les 5 premières lignes. Cela permet de gérer la sortie et de ne pas surcharger la base de données.

Ce que vous venez de pratiquer

  • Prévisualisation de la structure des données
  • Analyse des colonnes disponibles
  • Confirmation du format et des types de données

Nouveau à SQL ? Le cours SQL pour les débutants sur LearnSQL.fr vous guide à travers ces premières étapes de manière interactive, ce qui est parfait si vous débutez.

Ce que cela signifie pour vous

Vous verrez des colonnes comme formatted_date, temperature_c, wind_speed_kmh, et summary. Vous saurez ainsi ce qu'il est possible de faire et quels champs vous pourrez filtrer ou regrouper par la suite.

Quelle est la température moyenne à Szeged ?

Commençons par quelque chose de simple : la température moyenne de l'ensemble des données.

Requête SQL

SELECT 
  ROUND(AVG(temperature_c), 1) AS avg_temp
FROM szeged_weather;

Exemple de résultat

avg_temp
14.6

Comment cela fonctionne-t-il ?

  • AVG() calcule la valeur moyenne.
  • ROUND(..., 1) facilite la lecture en n'affichant qu'une seule décimale.

Ce que vous venez de pratiquer

  • Agrégation de base avec AVG()
  • Formatage des résultats numériques
  • Obtenir un chiffre global à partir de données brutes

Vous voulez maîtriser les fonctions SQL ? Consultez le cours Fonctions SQL standards sur LearnSQL.fr - il couvre AVG(), SUM(), MIN(), MAX(), et plus encore, avec des exercices pratiques et des cas d'utilisation réels.

Ce que cela signifie pour vous

Le résultat vous indique la température quotidienne moyenne à Szeged sur l'ensemble de la période de 10 ans. Il s'agit d'un point de référence utile - plus tard, vous pourrez comparer des mois ou des jours spécifiques à ce point de référence.

Quel est le mois le plus chaud à Szeged ?

Vous recherchez des journées chaudes et ensoleillées, peut-être pour visiter les marchés locaux, vous promener au bord de la rivière ou simplement éviter de prendre un manteau. Voyons quel est le mois où la température moyenne est la plus élevée à Szeged.

Requête 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;

Exemple de résultat

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

Comment cela fonctionne-t-il ?

  • EXTRACT(MONTH FROM ...) extrait le mois de chaque date.
  • AVG(temperature_c) calcule la température moyenne mensuelle.
  • ROUND(..., 1) la formate à une décimale.
  • GROUP BY et ORDER BY structurent les résultats pour faciliter la comparaison.

Ce que vous venez de pratiquer

  • Agrégation avec AVG()
  • Travailler avec des parties de date à l'aide de EXTRACT()
  • Grouper et trier les résultats d'une requête

📘 Vous voulez une pratique plus structurée ?

Essayez l'exercice Pratique SQL Group BY sur LearnSQL.fr. Ce cours pour débutants se concentre sur l'utilisation de GROUP BY avec des fonctions agrégées telles que AVG(), SUM(), MIN() et COUNT() dans différents scénarios et ensembles de données. Il est parfait pour renforcer ce que vous venez de pratiquer dans un format interactif.

Ce que cela signifie pour vous

  • Juillet est le mois le plus chaud à Szeged, suivi de près par août.
  • Les mois de mai et de septembre sont doux et conviennent à ceux qui préfèrent un temps agréable.
  • Évitez les mois de janvier à mars si vous espérez des journées chaudes.

Quels sont les types de temps les plus courants ?

Voyons quel type de temps vous avez le plus de chances de connaître, d'après la colonne récapitulative.

Requête SQL

SELECT 
  summary,
  COUNT(*) AS occurrences
FROM szeged_weather
GROUP BY summary
ORDER BY occurrences DESC
LIMIT 10;

Exemple de résultat

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

Comment cela fonctionne-t-il ?

  • COUNT(*) calcule la fréquence d'apparition de chaque résumé.
  • GROUP BY summary regroupe les valeurs identiques.
  • ORDER BY ... DESC et LIMIT permettent de se concentrer sur les 10 principaux types de temps.

Ce que vous venez de pratiquer

  • Analyse de fréquence avec COUNT(*)
  • Trier les résultats par ordre décroissant
  • Limitation des résultats avec LIMIT

Ce que cela signifie pour vous

  • La mention "Partiellement nuageux" est très fréquente. Vous pouvez donc vous attendre à un ciel mitigé.

Si vos vacances idéales requièrent un ensoleillement constant, vérifiez la fréquence à laquelle apparaît la mention "Clair".

Combien de fois pleut-il chaque mois ?

Le temps chaud, c'est bien, mais pas s'il pleut constamment. Calculons combien de fois il pleut à Szeged chaque mois - pas seulement le total des précipitations, mais aussi le nombre d'heures pendant lesquelles il pleut.

Chaque ligne de cet ensemble de données représente une heure de temps. Ainsi, lorsque nous calculons les pourcentages de pluie, nous répondons à la question suivante : "Sur l'ensemble des heures d'un mois donné, combien y a-t-il eu de pluie ?"

Requête 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;

Exemple de résultat

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

Comment cela fonctionne-t-il ?

  • EXTRACT(MONTH FROM formatted_date) nous donne le numéro du mois (1-12)
  • LOWER(summary) s'assure de la correspondance avec des mots comme "Rain" ou "rain" (pluie)
  • CASE WHEN ... THEN 1 ELSE 0 END vérifie chaque ligne :
    • Si elle contient "pluie" → retour 1
    • Si ce n'est pas le cas → retour 0
  • SUM(...) additionne tous les 1 - c'est le nombre d'heures de pluie dans ce mois
  • COUNT(*) nous donne le nombre total d'heures du mois
  • On divise, on multiplie par 100 et on arrondit le résultat pour obtenir un pourcentage exact.

Ce que vous venez de pratiquer

  • Utilisation de EXTRACT() pour regrouper les données par mois
  • Appliquer un compteur conditionnel avec CASE WHEN à l'intérieur SUM()
  • Insensibiliser les recherches de texte à la casse avec LOWER()
  • Calculer des pourcentages à partir de données groupées
  • Formater les nombres avec ROUND()

📘 Vous souhaitez approfondir ces compétences ?

Consultez le Création de rapports basiques en SQL sur LearnSQL.fr. Ce cours interactif explique comment utiliser les fonctions d'agrégation (AVG(), COUNT(), SUM()), classer les données avec CASE WHEN, et créer des rapports simples à l'aide de GROUP BY. Il s'adresse aux débutants et comprend des scénarios du monde réel et plus de 90 exercices pratiques pour renforcer ce que vous avez appris.

Ce que cela signifie pour vous

Si vous prévoyez de partir en vacances, ces informations vous donneront une idée précise de la situation :

  • Lemois de juin présente un risque de pluie plus élevé - environ 25 % de toutes les heures.
  • Le moisd'août est plus sûr, avec moins d'heures de pluie

Utilisez cette approche pour d'autres conditions, comme la neige, le brouillard ou le temps ensoleillé. Il suffit de changer un mot dans la clause LIKE.

Quels jours ont été froids et venteux ?

Certaines conditions météorologiques n'apparaissent pas dans les moyennes mensuelles. Cherchons les jours qui ont été à la fois froids et venteux - des conditions qui rendent le fait d'être à l'extérieur inconfortable.

Requête 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;

Exemple de résultat

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

Comment cela fonctionne-t-il ?

  • WHERE filtre les lignes qui remplissent les deux conditions : froid et vent.
  • ORDER BY temperature_c les énumère du plus froid au plus venteux.

Ce que vous venez de pratiquer

  • Conditions multiples dans un filtre
  • Opérateurs logiques (AND)
  • Tri par colonnes spécifiques

Ce que cela signifie pour vous

  • Ces jours sont rares mais rudes. La plupart tombent entre novembre et mars.
  • Cela confirme l'idée que Szeged n'est pas une ville idéale pour les voyages d'hiver.

Défi : Quelle a été la température la plus élevée jamais enregistrée ?

Voici l'occasion de mettre en pratique ce que vous avez appris. Pouvez-vous trouver l'heure la plus chaude de l'ensemble des données de Szeged ?

Tâche SQL

Vous aurez besoin de :

  • MAX(temperature_c) trouver la valeur la plus élevée enregistrée
  • ORDER BY temperature_c DESC trier les données
  • LIMIT 1 retourner uniquement l'heure la plus chaude
  • Ou utiliser une sous-requête pour obtenir à la fois la température et la date à laquelle elle s'est produite.

Nous vous laissons le soin d'effectuer la requête. Essayez-la, testez-la, et voyez à quels types d'extrêmes estivaux Szeged a été confrontée !

Essayez avec d'autres villes

Le plus beau, c'est que ces requêtes fonctionnent n'importe où. Ces requêtes fonctionnent partout. Que vous souhaitiez connaître le mois le plus venteux à Varsovie ou la saison la plus ensoleillée à Sydney, il vous suffit de charger un ensemble de données météorologiques historiques dans SQL et de commencer à explorer.

Vous ne faites pas que vous entraîner, vous découvrez. De vraies données. De vraies questions. De vraies réponses.
Et peut-être même votre prochain lieu de vacances.

Vous souhaitez affiner vos compétences en SQL ? LearnSQL.fr Le site Web de la Commission européenne propose des cours pratiques et interactifs qui vous permettent d'écrire et d'exécuter du code SQL dans votre navigateur. Commencez par le cours SQL pour les débutants et continuez ensuite.