Logo Zéphyrnet

SQL simplifié : création de requêtes modulaires et compréhensibles avec des CTE – KDnuggets

Date :

SQL simplifié : création de requêtes modulaires et compréhensibles avec des CTE
Image par auteur 
 

Dans le monde des données, SQL reste la lingua franca pour interagir avec les bases de données. 

Aujourd’hui encore, il constitue l’un des langages les plus utilisés pour traiter les données et est toujours considéré comme un incontournable pour tout bon professionnel des données. 

Cependant, quiconque a travaillé avec des requêtes SQL complexes sait qu'elles peuvent rapidement se transformer en bêtes encombrantes, difficiles à lire, à maintenir ou à réutiliser. 

C'est pourquoi aujourd'hui, il ne suffit pas de connaître SQL, il faut être doué pour élaborer des requêtes. Et c’est en fait une sorte d’art. 

C'est là que les expressions de table communes (CTE) entrent en jeu, transformant l'art de l'écriture de requêtes en un métier plus structuré et plus accessible.

Découvrons donc ensemble comment coder des requêtes lisibles et réutilisables.

Si vous vous demandez ce qu’est un CTE, vous êtes dans le bon article. 

Une expression de table commune (CTE) est un jeu de résultats temporaire défini dans la portée d'exécution d'une seule instruction SQL. 

 

Il s'agit de tables temporelles qui peuvent être référencées plusieurs fois dans une seule requête et qui sont généralement utilisées pour simplifier les jointures et les sous-requêtes complexes, dans le but ultime d'augmenter la lisibilité et l'organisation du code SQL.

Il s’agit donc d’un outil puissant pour décomposer des requêtes complexes en parties plus simples.

Voici pourquoi vous devriez envisager d'utiliser les CTE :

  • Modularité: Vous pouvez décomposer une logique complexe en morceaux lisibles.
  • Lisibilité: Cela facilite la compréhension du flux des requêtes SQL.
  • Réutilisabilité: Les CTE peuvent être référencés plusieurs fois dans une seule requête, évitant ainsi les répétitions.

La magie commence avec la clause WITH, qui précède votre requête principale et définit différentes tables temporelles (CTE) avec des alias.

Par conséquent, nous devons toujours démarrer notre requête avec la commande « AVEC » pour commencer à définir nos propres CTE. En utilisant les CTE, nous pouvons diviser n'importe quelle requête SQL complexe en : 

– Petites tables temporelles qui calculent les variables associées. 

– Un tableau final qui ne prend que les variables que nous voulons comme sortie.

Et c’est précisément l’approche MODULAIRE que nous souhaitons dans n’importe quel code !

 

SQL simplifié : création de requêtes modulaires et compréhensibles avec des CTE
Image par auteur
 

Ainsi, utiliser les CTE dans nos requêtes nous permet de :

– Exécuter une table temporelle UNE FOIS et la référencer PLUSIEURS fois.

– Améliorer la lisibilité et simplifier la logique complexe.

– Promouvoir la réutilisabilité du code et la conception modulaire.

Afin de mieux comprendre cela, nous pouvons prendre un exemple pratique des annonces Airbnb à Barcelone. 

Imaginons que nous souhaitions analyser la performance des annonces par quartier et la comparer à la performance globale de la ville. Vous devrez rassembler des informations sur les quartiers, les appartements individuels, les hôtes et les tarifs.

Pour illustrer cela, nous utiliserons le À l'intérieur d'Airbnb tableau de Barcelone, qui ressemble à ceci : 

 

SQL simplifié : création de requêtes modulaires et compréhensibles avec des CTE
 

Une approche naïve pourrait vous amener à créer des sous-requêtes imbriquées qui deviendraient rapidement un cauchemar de maintenance comme celui-ci :

Code par auteur

Au lieu de cela, nous pouvons utiliser les CTE pour compartimenter notre requête en sections logiques, chacune définissant une pièce du puzzle.

  • Données de quartier : Créez un CTE pour résumer les données par quartier.
  • Informations sur l'appartement et l'hôte : Définissez les CTE pour plus de détails sur les appartements et les hôtes.
  • Mesures à l’échelle de la ville : Un autre CTE pour recueillir des statistiques au niveau de la ville à des fins de comparaison.
  • L'assemblage final: Combinez les CTE dans une instruction SELECT finale pour présenter les données de manière cohérente.

 

SQL simplifié : création de requêtes modulaires et compréhensibles avec des CTE
Image par auteur
 

Et on se retrouverait avec la requête suivante :

Code par auteur

En utilisant les CTE, nous transformons une requête unique potentiellement monstrueuse en un ensemble organisé de modules de données. Cette approche modulaire rend le code SQL plus intuitif et adaptable aux changements. 

Si de nouvelles exigences apparaissent, vous pouvez ajuster ou ajouter des CTE sans remanier l’intégralité de la requête.

Une fois que vous avez établi vos CTE, vous pouvez les réutiliser pour effectuer une analyse comparative. Par exemple, si vous souhaitez comparer les données de quartier avec des mesures à l'échelle de la ville, vous pouvez référencer vos CTE dans une série d'opérations JOIN. 

Cela permet non seulement de gagner du temps, mais également de maintenir l'efficacité de votre code, car vous n'aurez pas à répéter deux fois la même requête !

Les CTE témoignent du principe selon lequel un peu de structure fait beaucoup de chemin dans la programmation. En adoptant les CTE, vous pouvez écrire des requêtes SQL plus claires, plus maintenables et réutilisables. 

Il rationalise le processus de développement des requêtes et facilite la communication d'une logique complexe de récupération de données à d'autres.

N'oubliez pas que la prochaine fois que vous vous lancerez dans l'écriture d'un monstre de sous-requête imbriquée et à jointures multiples, envisagez de le décomposer avec des CTE. 

Votre futur moi – et toute autre personne susceptible de lire votre code – vous remerciera.
 
 

Joseph Ferrier est un ingénieur analytique de Barcelone. Il est diplômé en génie physique et travaille actuellement dans le domaine de la science des données appliquée à la mobilité humaine. Il est un créateur de contenu à temps partiel axé sur la science et la technologie des données. Vous pouvez le contacter sur LinkedIn, Twitter or Moyenne.

spot_img

Dernières informations

spot_img