Retour à la liste des articles Articles
19 minutes de lecture

Améliorez vos compétences : 20 problèmes SQL pratiques pour les utilisateurs débutants et intermédiaires

Vous voulez devenir un expert en SQL ? Essayez de résoudre ces 20 problèmes de pratique SQL !

Que vous débutiez votre parcours SQL ou que vous vous prépariez à des examens, vous devez aiguiser vos compétences SQL si vous voulez devenir un expert. Et vous savez ce que l'on dit : c'est en forgeant qu'on devient forgeron !

Comme la plupart des compétences, le langage SQL s'apprend mieux par l'expérience ; la pratique du langage SQL vous permet d'appliquer vos connaissances à des scénarios du monde réel. Grâce à une pratique répétée, vous gagnerez en confiance pour vous plonger dans des tâches SQL complexes et exceller dans les domaines académiques et professionnels.

Dans cet article, j'ai sélectionné 20 problèmes de pratique SQL issus de cours de niveau débutant et intermédiaire. LearnSQL.fr débutants et intermédiaires. Ces exercices couvrent des concepts fondamentaux jusqu'à des concepts plus avancés, vous donnant une progression graduelle pour devenir un utilisateur SQL compétent. Chaque exercice est accompagné d'explications claires et d'une solution.

De nombreux exercices de cet article sont inspirés de notre populaire La pratique du SQL très populaire. Ses 9 cours et plus de 1 100 exercices de codage vous mettront sérieusement au défi ! Si vous voulez plus d'exercices SQL après avoir terminé cet article, je vous recommande de vous rendre sur ce site.

Êtes-vous prêt ? C'est parti ! Essayez de résoudre chaque problème avant de lire la solution.

20 La pratique du SQL Problèmes avec solutions

Avant de commencer, vous pouvez télécharger ou marquer d'un signet notre aide-mémoire gratuit SQL pour les débutants. Elle résume les concepts de base du langage SQL et vous sera probablement utile.

Pour les problèmes pratiques suivants, j'utiliserai un scénario que nous connaissons tous : un magasin. Voici le diagramme de la base de données :

20 La pratique du SQL Problèmes pour les utilisateurs débutants et intermédiaires

Comme vous pouvez le voir, la store Comme vous pouvez le voir, la base de données comporte 6 tables :

La table des clients contient des informations sur les clients. Elle comporte les colonnes suivantes :

  • customer_id: L'identifiant interne unique du client.
  • contact_name: Le nom complet du client.
  • company_name: Le nom de l'entreprise du client.
  • contact_email: L'adresse électronique du client.
  • address: L'adresse du client.
  • city: La ville où le client habite.
  • country: Le pays où vit le client.

Le tableau product contient la liste des produits disponibles dans le magasin. Ses colonnes sont les suivantes :

  • product_id: l'identifiant du produit
  • product_name: Le nom du produit.
  • category_id: L'ID de la catégorie du produit. Cela permet d'établir un lien avec les éléments suivants category
  • quantity_per_unit: La quantité d'articles du produit dans une unité.
  • unit_price: Le prix du produit.
  • units_in_stock: Le nombre d'unités disponibles du produit.
  • discontinued: si le produit est disponible dans le magasin (valeur FALSE) ou s'il a été supprimé (valeur TRUE).

Le tableau category contient des informations sur les catégories de produits :

  • category_id: L'ID de la catégorie.
  • name: Le nom de la catégorie.
  • description: Une description de la catégorie.
  • parent_category_id: Si cette catégorie est une sous-catégorie, elle pointe vers la catégorie mère. Dans le cas contraire, cette colonne sera NULL.

Le tableau purchase contient des informations sur chaque commande :

  • purchase_id: L'identifiant de cet achat.
  • customer_id: L'ID du client qui a effectué l'achat.
  • employee_id: L'ID de l'employé qui s'est occupé de la commande.
  • total_price: Le prix total de la commande.
  • purchase_date: L'heure à laquelle la commande a été reçue.
  • shipped_date: L'heure à laquelle la commande a été expédiée.
  • ship_address: L'adresse à laquelle la commande a été expédiée.
  • ship_city: La ville où la commande a été expédiée.
  • ship_country: Le pays dans lequel la commande a été expédiée.

Le tableau purchase_item relie les achats aux produits. Elle comporte les colonnes obligatoires suivantes :

  • purchase_id: L'ID de l'achat.
  • product_id: L'ID du produit acheté.
  • unit_price: Le prix d'une unité de ce produit.
  • quantity: Le nombre d'unités achetées de ce produit.

Le tableau employee contient des informations sur les employés du magasin. Elle comporte les colonnes suivantes :

  • employee_id: L'ID de l'employé.
  • last_name: Le nom de famille de l'employé.
  • first_name: Le prénom de l'employé.
  • birth_date: La date de naissance de l'employé.
  • address: L'adresse de l'employé.
  • city: la ville de l'employé.
  • country: Le pays de l'employé.
  • reports_to: L'identifiant du superviseur direct de l'employé. C'est NUL si l'employé ne dépend de personne.

Exercice 1 : Sélectionner toutes les colonnes

Exercice

Affichez toutes les données du tableau product table.

Solution

SELECT *
FROM product;

Explication

Dans cette requête, la clause SELECT est utilisée pour spécifier les colonnes que nous voulons extraire de la table product. Dans ce cas, l'astérisque (*) est l'abréviation de "toutes les colonnes". La clause FROM spécifie la table à partir de laquelle les données doivent être extraites. Dans cette requête, il s'agit de la table product table.

En résumé, la requête demande essentiellement à la base de données de renvoyer toutes les colonnes pour chaque ligne de la table des produits.

Exercice 2 : sélection de plusieurs colonnes

Exercice

Affichez les noms et les adresses électroniques des clients. Vous trouverez le nom dans la colonne contact_name et l'adresse électronique dans la colonne contact_email. Renommez les colonnes name et email.

Solution

SELECT
  contact_name AS name,
  contact_email AS email
FROM customer;

Explication

Dans cette requête, la clause SELECT est utilisée pour spécifier les colonnes que nous voulons extraire de la table customer. Notez que les colonnes sont séparées par des virgules.

Ensuite, nous utilisons le mot-clé AS pour renommer la colonne contact_name en nom et contact_email en email. Ces nouveaux noms sont appelés "alias".

Comme précédemment, la clause FROM est utilisée pour indiquer la table à partir de laquelle les données vont être extraites ; ici, customer.

En résumé, la requête demande à la base de données d'extraire les colonnes contact_name et contact_email de la table customer de la table. Elle lui demande également d'afficher ces colonnes sous les noms name et email, respectivement. L'ensemble des résultats comprendra ces deux colonnes aliasées pour chaque ligne de la table. customer de la table.

Exercice 3 : Sélectionner des valeurs distinctes dans un tableau

Exercice

Affichez les identifiants de tous les clients qui ont effectué au moins un achat. Aucun identifiant de client en double ne doit être affiché.

Solution

SELECT DISTINCT customer_id
FROM purchase;

Explication

Comme nous voulons retrouver les clients qui ont effectué un achat, nous sélectionnons leurs identifiants dans la table qui stocke les données relatives aux achats, purchase. La clause SELECT combinée à DISTINCT supprime toutes les valeurs customer_id dupliquées de l'ensemble de résultats.

Exercice 4 : sélection de colonnes à l'aide de WHERE

Exercice

Afficher toutes les données d'un client dont l'ID est 4.

Solution

SELECT *
FROM customer
WHERE customer_id = 4;

Explication

Cette requête récupère toutes les colonnes (* représente toutes les colonnes) de la table customer mais seulement si la valeur de la colonne customer_id est égale à 4.

La clause WHERE filtre les lignes pour n'inclure que celles qui correspondent à la condition énoncée - ici, que la valeur de la colonne customer_id soit égale à 4. L'opérateur = est utilisé pour la comparaison d'égalité. L'ensemble des résultats comprendra toutes les colonnes des lignes qui répondent à cette condition.

Exercice 5 : Sélection de colonnes à l'aide de WHERE avec du texte

Exercice

Afficher les noms de tous les clients vivant à Dallas.

Solution

SELECT contact_name
FROM customer
WHERE city = 'Dallas';

Explication

Cette requête récupère toutes les colonnes (*) de la table customer . La clause WHERE filtre les lignes pour n'inclure que celles dont la valeur dans la colonne city est égale à "Dallas". Dallas" est une chaîne de caractères, elle est donc placée entre guillemets simples.

Exercice 6 : Sélectionner des colonnes à l'aide de WHERE et LIKE

Exercice

Afficher toutes les données relatives aux produits dont le nom commence par "Bœuf".

Solution

SELECT *
FROM product
WHERE product_name LIKE 'Beef%';

Explication

La condition WHERE filtre les lignes pour n'inclure que celles dont la valeur dans la colonne product_name commence par "Bœuf". L'opérateur LIKE est utilisé pour la recherche de motifs : 'Beef%' est un motif où 'Beef' est le début du motif et '%' est un caractère de remplacement qui correspond à toute séquence de caractères suivant 'Beef'.

Notez que l'opérateur LIKE est sensible à la casse ; les valeurs qui commencent par "beef" ou "BEEF" ne seront pas incluses dans les résultats.

Exercice 7 : sélection de colonnes à l'aide de WHERE et de <>

Exercice

Afficher les noms des produits et les identifiants des catégories correspondantes pour les catégories dont l'identifiant est différent de 1 (Alimentation).

Solution

SELECT 
  product_name, 
  category_id
FROM product
WHERE category_id <> 1;

Explication

Cette requête extrait des colonnes spécifiques (product_name et category_id) de la table où la valeur de la colonne est différente de 1 (Alimentation). product où la valeur de la colonne category_id est différente de 1. L'opérateur <> est le contraire de l'opérateur =; il ne renvoie que les valeurs qui ne correspondent pas à la condition.

Exercice 8 : Sélection de colonnes à l'aide de WHERE et d'un opérateur logique

Exercice

Afficher les noms de tous les clients dont le nom de l'entreprise est Oloo ou Fliptune.

Solution

SELECT
  contact_name
FROM customer
WHERE company_name = 'Oloo'
  OR company_name = 'Fliptune';

Explication

Cette requête extrait les noms des clients de la table customer où la valeur de la colonne company_name est égale à "Oloo" ou "Fliptune". L'opérateur OR est utilisé pour combiner ces conditions, indiquant que l'une d'entre elles doit être vraie pour qu'une ligne soit incluse dans l'ensemble de résultats.

Exercice 9 : sélection de colonnes à l'aide des opérateurs WHERE, OR et AND

Exercice

Afficher les données de tous les produits de la catégorie dont l'ID est 1 (Aliments) ou 5 (Fruits et légumes) et dont le prix unitaire est supérieur à 3,5.

Solution

SELECT *
FROM product
WHERE (category_id = 1 OR category_id = 5)
  AND unit_price > 3.5;

Explication

Cette requête extrait toutes les colonnes de la table product où la valeur de la colonne category_id est égale à 1 ou 5, et la valeur de la colonne unit_price est supérieure à 3,5. Les opérateurs logiques OR et AND sont utilisés pour combiner ces conditions. Notez que les conditions OR sont entourées de parenthèses pour indiquer à SQL d'exécuter ce bloc en premier.

Exercice 10 : Sélectionner des colonnes en utilisant WHERE et NOT

Exercice

Afficher le nom de tous les produits à l'exception des produits non discontinués appartenant à la catégorie ID 3.

Solution

SELECT product_name
FROM product
WHERE NOT (discontinued IS TRUE AND category_id = 3);

Explication

Cette requête extrait toutes les colonnes de la table productsauf celles où la valeur de la colonne category_id est égale à 3 et la valeur logique de la colonne discontinued est TRUE. Le mot-clé NOT annule la condition entourée de parenthèses, ce qui signifie qu'il sélectionne les lignes où discontinued et category_id sont autres que VRAI et 3.

Exercice 11 : ordonner les résultats d'une requête avec ORDER BY

Exercice

Affichez toutes les données relatives aux achats commandés par date d'expédition. Les achats dont la date d'expédition est la plus récente doivent être affichés en premier.

Solution

SELECT 
  purchase_id, 
  total_price, 
  shipped_date
FROM purchase
ORDER BY shipped_date DESC;

Explication

Cette requête extrait les colonnes purchase_id, total_price, et purchase_date de la table purchase et ordonne l'ensemble des résultats en fonction de la colonne shipped_date dans l'ordre décroissant. La clause ORDER BY ordonne l'ensemble des résultats en fonction des valeurs de la colonne shipped_date. Le mot-clé DESC signifie "descending", ce qui signifie que l'ensemble des résultats sera trié par ordre décroissant (des dates les plus récentes aux dates les plus anciennes).

Exercice 12 : Sélectionner et filtrer des colonnes et ordonner les résultats

Exercice

Afficher toutes les données relatives aux achats dont le prix total est supérieur ou égal à 10. Les achats dont les dates d'expédition sont les plus récentes doivent être affichés en premier.

Solution

SELECT *
FROM purchase
WHERE total_price >= 10
ORDER BY shipped_date DESC;

Explication

Cette requête extrait toutes les colonnes de la table purchase où la valeur de la colonne total_price est supérieure ou égale à 10. Elle ordonne également l'ensemble des résultats en fonction de la colonne shipped_date dans l'ordre décroissant (DESC). La condition WHERE filtre les lignes pour n'inclure que celles dont la valeur dans la colonne total_price est supérieure ou égale à 10.

Exercice 13 : Colonnes de groupe et COUNT()

Exercice

Affichez tous les ID de catégorie et le nombre de produits dans cette catégorie.

Solution

SELECT category_id, COUNT(*)
FROM product
GROUP BY category_id;

Explication

Cette requête récupère le nombre de produits dans chaque catégorie de la table product de la table. La clause SELECT spécifie que nous voulons récupérer la colonne category_id et le nombre d'occurrences de chaque category_id distinct (la fonction d'agrégation COUNT(*)).

Enfin, la clause GROUP BY regroupe les résultats en fonction des valeurs de la colonne category_id. Elle garantit que le décompte est calculé pour chaque numéro de catégorie unique.

Exercice 14 : regrouper des colonnes et trouver la moyenne

Exercice

Pour tous les clients, affichez l'identifiant du client et le prix moyen de tous les achats effectués pour ce client.

Solution

SELECT 
  customer_id, 
  AVG(total_price)
FROM purchase
GROUP BY customer_id;

Explication

Cette requête est similaire à l'exercice précédent - mais cette fois, nous utilisons la fonction d'agrégation AVG() pour afficher la moyenne des achats pour chaque client. La clause SELECT renvoie la colonne customer_id et la moyenne de total_price pour chaque customer_id distinct dans la table. purchase dans la table.

Exercice 15 : GROUP BY Multiple Columns

Exercice

Pour chaque paire client-employé, trouvez le prix total des achats effectués par ce client et traités par cet employé. Affichez trois colonnes : customer_id, employee_id, et le prix total des achats. Nommez la troisième colonne total_purchases_price.

Solution

SELECT
  customer_id,
  employee_id,
  SUM(total_price) AS total_purchases_price
FROM purchase
GROUP BY
  customer_id,
  employee_id;

Explication

Cette requête extrait les prix totaux des achats pour chaque paire client-employé. La clause SELECT inclut ici la colonne customer_id, la colonne employee_id et la somme de total_price pour chaque customer_id dans la table. purchase de la table. La clause GROUP BY regroupe les résultats en fonction des valeurs des colonnes customer_id et employee_id.

Exercice 16 : GROUP BY et HAVING

Exercice

Trouvez le plus petit montant d'achat pour chaque paire client-employé. N'affichez que les paires pour lesquelles il y a au moins deux achats. Les noms des colonnes doivent être customer_id, employee_id et minimum_price.

Solution

SELECT
  customer_id,
  employee_id,
  MIN(total_price) AS minimum_price
FROM purchase
GROUP BY customer_id,
  employee_id
HAVING COUNT(total_price) >= 2;

Explication

Cette requête extrait les valeurs distinctes des colonnes customer_id et employee_id ainsi que le prix d'achat minimum situé dans la colonne total_price. Le prix d'achat minimum est nommé minimum_price. La clause GROUP BY regroupe les résultats en fonction des valeurs des colonnes customer_id et employee_id, et la clause HAVING filtre les résultats pour n'inclure que les groupes dont le nombre d'occurrences est supérieur ou égal à 2.

Vous avez aimé ces exercices sur GROUP BY? Ignacio L. Bisso vous en propose d'autres dans son excellent article La pratique du SQL : 10 GROUP BY Exercises with Solutions.

Exercice 17 : Sélectionner les colonnes de 2 tables avec INNER JOIN

Exercice

Indiquez les noms et prénoms des employés qui s'occupent de chaque achat et le shipped_date de cet achat.

Solution

SELECT
  last_name,
  first_name,
  shipped_date
FROM employee
JOIN purchase
  ON employee.employee_id = purchase.employee_id;

Explication

Cette requête effectue une opération INNER JOIN entre les tables employee et purchase et sélectionne des colonnes spécifiques (last_name, first_name, et shipped_date) dans les tables jointes. Elle combine les lignes de la table employee avec les lignes correspondantes de la table purchase sur la base de la colonne commune employee_id. S'il n'y a pas de correspondance dans le tableau purchase la ligne ne sera pas incluse dans l'ensemble de résultats.

Exercice 18 : sélection de colonnes à partir de 4 tables avec LEFT JOIN

Exercice

Affichez les noms et les adresses électroniques de tous les clients et listez les noms des produits qu'ils ont achetés ainsi que le prix du produit au moment de l'achat. Incluez les clients qui n'ont effectué aucun achat. Ne renommez pas les colonnes.

Solution

SELECT
  contact_name,
  contact_email,
  product_name,
  purchase_item.unit_price
FROM customer
LEFT JOIN purchase
  ON customer.customer_id = purchase.customer_id
LEFT JOIN purchase_item
  ON purchase.purchase_id = purchase_item.purchase_id
LEFT JOIN product
  ON purchase_item.product_id = product.product_id;

Explication

Cette requête effectue une triple opération de JOINTE DE GAUCHE entre les éléments suivants customer, purchase, purchase_item, et product et sélectionne des colonnes spécifiques (contact_name, contact_email, product_name, et unit_price) dans l'ensemble des résultats. Elle combine les lignes de la table customer avec les lignes correspondantes de la table purchase, purchase_item, et product sur la base des colonnes communes customer_id, purchase_id, et product_id.

S'il n'y a pas de correspondance dans le tableau purchase les valeurs de NULL seront incluses dans l'ensemble de résultats pour les colonnes de la table purchase_item de la table.

Exercice 19 : combinaison de INNER JOIN, GROUP BY et HAVING

Exercice

Pour chaque catégorie, trouvez le nombre de produits abandonnés. N'affichez que les catégories comportant au moins trois produits abandonnés. Triez les lignes par ordre décroissant du nombre de produits abandonnés. Affichez deux colonnes : name (le nom de la catégorie) et discontinued_products_number.

Solution

SELECT
  category.name,
  COUNT(product_id) AS discontinued_products_number
FROM product
JOIN category
  ON product.category_id = category.category_id
WHERE discontinued IS TRUE
GROUP BY category.name
HAVING COUNT(product_id) >= 3
ORDER BY COUNT(product_id) DESC;

Explication

Cette requête effectue une opération INNER JOIN entre les champs product et category . Elle affiche le nom et le nombre d'occurrences de chaque Elle affiche category name et le nombre d'occurrences de chaque product_id distinct dans l'ensemble de résultats. Elle combine les lignes de la table product avec les lignes correspondantes de la table category sur la base de la colonne commune category_id.

Les lignes sont regroupées par nom de catégorie ; la fonction d'agrégation COUNT() est utilisée sur la colonne category_id pour renvoyer le nombre de produits dans cette catégorie. La clause HAVING filtre les catégories comportant au moins des produits abandonnés. Les lignes sont affichées dans l'ordre décroissant de l'ID du produit (ORDER BY COUNT(product_id) DESC).

Exercice 20 : autre requête INNER JOIN, GROUP BY et HAVING

Exercice

Pour chaque client, indiquez le nombre d'achats qu'il a effectués. N'incluez que les achats dont l'adresse n'est pas NULL ( ship_city ) et n'indiquez que les clients dont le coût total de tous les achats est supérieur à 14. Les noms des colonnes doivent être contact_name et purchase_quantity. Triez les lignes par contact_name.

Solution

SELECT
  contact_name,
  COUNT(*) AS purchase_quantity
FROM purchase
JOIN customer
  ON purchase.customer_id = customer.customer_id
WHERE ship_city IS NOT NULL
GROUP BY contact_name
HAVING SUM(total_price) > 14
ORDER BY contact_name;

Explication

Cette requête effectue une opération INNER JOIN entre les colonnes purchase et customer et sélectionne le site contact_name et le nombre d'occurrences de chaque achat distinct dans l'ensemble des résultats. Les lignes sont regroupées par noms de contact. La clause HAVING permet de filtrer le prix total requis.

Ces exercices sur les JOIN vous ont-ils posé des problèmes ? Je vous recommande vivement de lire Jointures SQL : 12 questions pratiques avec des réponses détaillées de Tihomir Babic.

Plus de problèmes La pratique du SQL sur LearnSQL.com

Si vous avez aimé les problèmes pratiques précédents, vous pouvez trouver d'autres problèmes pratiques SQL sur LearnSQL.fr. Chaque problème pratique est soigneusement conçu avec des conseils, des solutions et des explications. Cette approche permet aux débutants non seulement de résoudre le problème, mais aussi d'apprendre les concepts fondamentaux de SQL. Contrairement aux exercices théoriques conventionnels, les problèmes pratiques de LearnSQL.fr sont pratiques et liés à des scénarios de la vie réelle. Ces problèmes réalistes renforcent la compréhension théorique et améliorent considérablement votre confiance.

Voici quelques cours LearnSQL.fr que je recommande particulièrement si vous cherchez à vous entraîner davantage :

La pratique du SQL : Université

Le cours La pratique du SQL : Université est idéal pour les étudiants et les novices en SQL. Basé sur un scénario réaliste (une université fictive), ce cours propose 156 exercices SQL interactifs. Les premiers exercices se concentrent sur la construction de requêtes SELECT de base, tandis que les derniers vous mettent au défi de créer des requêtes SQL avancées. Vous utiliserez SELECT, WHERE, divers JOIN, GROUP BY, HAVING, ORDER BY, les opérateurs set et les sous-requêtes.

Cours de base La pratique du SQL : A Store

Le cours Basic La pratique du SQL : A Store est un excellent choix pour les personnes qui gèrent un magasin physique ou une boutique en ligne et qui souhaitent améliorer leurs compétences en matière de maîtrise des données. En suivant ce cours, vous n'améliorerez pas seulement votre compréhension des données, mais vous augmenterez aussi potentiellement vos profits. Si vous exploitez une application en marque blanche conçue pour les propriétaires de magasins (comme un ERP), ce cours est fait pour vous. Il couvre un large éventail de sujets, notamment les produits, les catégories, l'inventaire, les achats, la gestion des employés, etc.

Pratique SQL de base : Des courses aux requêtes !

Le cours Pratique SQL de base : Des courses aux requêtes ! comprend des travaux pratiques avec des données authentiques. Plongez dans une base de données remplie d'informations sur les Jeux olympiques de Rio, les Championnats du monde IAAF 2019 de Doha et les Championnats du monde IAAF 2017 de Londres. Découvrez les champions des sprints, des marathons et des longues distances, déterminez les pays les plus performants, trouvez les vitesses et les distances moyennes, et bien plus encore. Que vous soyez passionné de sport, d'athlétisme ou d'informations sur les pistes, ce cours vous offre une expérience sur mesure !

Basic La pratique du SQL : Blog & Traffic Data

Le cours Basic La pratique du SQL : Blog & Traffic Data est conçu pour les personnes qui supervisent un blog à fort trafic. Votre maîtrise du langage SQL sera mise à l'épreuve lorsque vous analyserez divers aspects des données du blog, notamment la popularité des articles, l'évaluation des performances des auteurs et le succès des promotions de produits basées sur les articles. Que vous soyez propriétaire d'un blog, gestionnaire ou étudiant en SQL, ce cours est conçu pour répondre à vos besoins.

Les problèmes pratiques avec des scénarios du monde réel sont les meilleurs. Jakub Romanowski a résumé les principaux endroits où trouver des ensembles de données dans son article Où puis-je trouver des ensembles de données en ligne gratuits pour pratiquer le langage SQL ?

La pratique du SQL Problèmes : La voie à suivre

J'espère vraiment que cet article vous a aidé à pratiquer SQL ! Chaque défi que vous rencontrez est un pas en avant vers la maîtrise de SQL. Que vous soyez un étudiant débutant ou un spécialiste cherchant à affiner ses compétences, chaque problème pratique est un élément constitutif de votre apprentissage. Profitez du voyage, appréciez le processus et rappelez-vous que chaque problème pratique SQL vous rapproche un peu plus de votre statut d'expert. Continuez à coder, continuez à vous développer et continuez à vous frayer un chemin vers le succès grâce à SQL !

Un dernier conseil : chaque mois, nous publions un nouveau cours de pratique SQL dans notre piste de pratique mensuelle SQL. Il vous permettra d'apprendre en résolvant des problèmes SQL de manière continue et progressive.

Merci d'avoir lu cet article ; à bientôt dans le prochain !