Retour à la liste des articles Articles
24 minutes de lecture

20 exemples de requêtes SQL de base pour les débutants : Une vue d'ensemble complète

Table des matières

Ces 20 requêtes de base sont indispensables dans un pack de démarrage pour tout débutant en SQL. Ces exemples vous permettront de vous lancer dans la maîtrise de SQL.

Vous avez décidé d'apprendre le langage SQL, vous avez cherché sur Google 'basic sql query examples' ou quelque chose de similaire, et vous voilà devant cet article. Et maintenant ? Tout apprentissage commence par les bases, alors commençons par la question la plus élémentaire :

Qu'est-ce que le langage SQL ?

La première chose à faire est de savoir ce qu'est le langage SQL. SQL, ou Structured Query Language, est un langage de programmation. Comme tout langage - de programmation ou naturel - il est utilisé pour communiquer, pour parler. Le langage SQL est conçu pour communiquer avec une base de données. Pour ce faire, nous utilisons des phrases que nous appelons des requêtes, qui sont des commandes SQL permettant d'extraire des données de la base de données.

Nous vous montrerons bientôt 20 exemples de requêtes SQL de base pour commencer à parler avec la base de données. Toutes ces requêtes sont enseignées dans notre SQL pour les débutants Ce cours vous donnera encore plus de structure, d'exemples et de défis à relever. Il comporte 129 exercices interactifs sur l'interrogation d'une ou plusieurs tables, l'agrégation et le regroupement de données, les JOIN, les sous-requêtes et les opérations ensemblistes. Même avec les 20 exemples à venir, nous ne montrerons pas tous les détails ni même toutes les requêtes de base. C'est pourquoi nous recommandons d'utiliser le cours comme une plate-forme pour pratiquer les principes fondamentaux que nous aborderons ici.

De plus, la plupart de nos exemples sont joliment présentés dans notre Cheat SheetSQL pour les débutants . N'hésitez pas à l'avoir à portée de main - elle pourrait vous aider à mieux comprendre ce qui suit.

Ne perdons pas de temps ! Nous allons présenter le jeu de données, puis nous allons écrire et expliquer les requêtes SQL de base.

Jeu de données

Le jeu de données se compose de deux tables. La première est illustrée ci-dessous ; vous pouvez créer cette table en copiant et en exécutant cette requête depuis GitHub.

idfirst_namelast_namedepartmentsalary
1PaulGarrixCorporate3,547.25
2AstridFoxPrivate Individuels2,845.56
3MatthiasJohnsonPrivate Individuels3,009.41
4LucyPattersonPrivate Individuels3,547.25
5TomPageCorporate5,974.41
6ClaudiaConteCorporate4,714.12
7WalterDeerPrivate Individuels3,547.25
8StephanieMarxCorporate2,894.51
9LucaPavarottiPrivate Individuels4,123.45
10VictoriaPollockCorporate4,789.53

Comme toute table, elle a un nom : employees. Chaque tableau a des colonnes qui ont également un nom. Ils décrivent les données que chaque colonne contient.

Les colonnes et les données du tableau ci-dessus sont les suivantes :

  • id - L'identifiant unique de l'employé et la clé primaire de la table.
  • first_name - Le prénom de l'employé.
  • last_name - Le nom de famille de l'employé.
  • department - Le département de l'employé.
  • salary - Le salaire mensuel de l'employé, en USD.

Tout ceci nous indique que cette table est une liste des employés d'une entreprise et de leurs salaires. Il y a également des données sur les départements des employés. Tous les employés travaillent dans la division des ventes, où le département peut être Corporate ou Private Individuels. En d'autres termes, les employés vendent les produits de l'entreprise aux entreprises et aux particuliers.

L'autre tableau de l'ensemble de données s'appelle quarterly_sales. Elle est illustrée ci-dessous et la requête permettant de la créer se trouve ici.

employee_idq1_2022q2_2022q3_2022q4_2022
83,471.4114,789.253,478.341,254.23
45,417.8112,846.238,741.543,589.99
101,547.521,269.661,478.652,474.33
18,715.558,465.6524,747.823,514.36
312,774.5124,784.3112,223.348,451.51
24,989.235,103.224,897.985,322.05
718,415.6615,279.3714,634.4414,445.12
62,498.638,741.453,997.652,497.21
56,349.747,555.556,944.357,788.01
94,485.364,101.508,787.457,648.90

Les colonnes sont les suivantes :

  • employee_id - L'identifiant unique de l'employé. De plus, une clé étrangère référençant la colonne id de la table employees.
  • q1_2022 - Le chiffre d'affaires réalisé par cet employé au cours du premier trimestre 2022.
  • q2_2022 - Le chiffre d'affaires réalisé par cet employé au cours du deuxième trimestre 2022.
  • q3_2022 - Le chiffre d'affaires réalisé par cet employé au cours du troisième trimestre 2022.
  • q4_2022 - Le chiffre d'affaires réalisé par cet employé au cours du quatrième trimestre 2022.

En général, ce tableau est une liste des ventes réalisées au cours de chaque trimestre par chaque employé figurant dans le premier tableau.

Commençons maintenant à écrire des requêtes SQL.

1. Sélection de toutes les colonnes d'un tableau

Cette requête est utile lorsque vous souhaitez obtenir rapidement toutes les colonnes d'un tableau sans écrire chaque colonne dans l' instruction SELECT.

Requête

SELECT *
FROM employees;

Explication

Lorsque vous souhaitez sélectionner un nombre quelconque de colonnes dans une table, vous devez utiliser l'instruction SELECT. Vous l'écrivez, de manière assez évidente, en utilisant le mot-clé SELECT.

Ce mot-clé est suivi d'un astérisque (*), qui signifie "toutes les colonnes de la table".

Pour spécifier la table, utilisez la clause FROM et écrivez le nom de la table à la suite.

Sortie

La sortie de la requête est le tableau entier employeescomme indiqué ci-dessous.

idfirst_namelast_namedepartmentsalary
1PaulGarrixCorporate3,547.25
2AstridFoxPrivate Individuels2,845.56
3MatthiasJohnsonPrivate Individuels3,009.41
4LucyPattersonPrivate Individuels3,547.25
5TomPageCorporate5,974.41
6ClaudiaConteCorporate4,714.12
7WalterDeerPrivate Individuels3,547.25
8StephanieMarxCorporate2,894.51
9LucaPavarottiPrivate Individuels4,123.45
10VictoriaPollockCorporate4,789.53

2. Sélection d'une colonne d'une table

Vous pouvez utiliser cette requête lorsque vous n'avez besoin que d'une seule colonne du tableau.

Requête

SELECT first_name
FROM employees;

Explication

L'approche est similaire à la requête précédente. Cependant, cette fois-ci, au lieu d'un astérisque, nous écrivons le nom de la colonne spécifique dans SELECT. Dans ce cas, il s'agit de la colonne first_name.

La deuxième ligne de la requête est la même : elle fait référence à la table dans la clause FROM.

Résultat

La requête renvoie la liste des prénoms des employés.

first_name
Paul
Astrid
Matthias
Lucy
Tom
Claudia
Walter
Stephanie
Luca
Victoria

3. Sélection de deux colonnes dans un tableau

Cette requête est utile pour sélectionner deux colonnes (ou plus) dans un tableau.

Requête

SELECT first_name,
	 last_name
FROM employees;

Explication

L'approche est similaire à celle des exemples précédents. Pour sélectionner deux colonnes, vous devez écrire leur nom à l'adresse SELECT. L'important est que les colonnes soient séparées par une virgule. Vous pouvez voir dans l'exemple qu'il y a une virgule entre les colonnes first_name et last_name.

Ensuite, comme d'habitude, faites référence au tableau employees dans FROM.

Résultat

La requête affiche maintenant les noms complets des employés.

first_namelast_name
PaulGarrix
AstridFox
MatthiasJohnson
LucyPatterson
TomPage
ClaudiaConte
WalterDeer
StephanieMarx
LucaPavarotti
VictoriaPollock

4. Sélection de deux colonnes (ou plus) d'une table et filtrage à l'aide d'une comparaison numérique dans WHERE

La connaissance de cette requête SQL vous permettra de filtrer les données en fonction de valeurs numériques. Vous pouvez le faire en utilisant des opérateurs de comparaison dans la clause WHERE.

Voici un aperçu des opérateurs de comparaison SQL.

Comparison OperatorDescription
=Is equal to
>Is greater than
<Is less than
>=Is greater than or equal to
<=Is less than or equal to
<>Is not equal to

Requête

SELECT 
  first_name, 
  last_name,
  salary
FROM employees
WHERE salary > 3800;

Explication

La requête sélectionne en fait trois colonnes, et non deux. C'est la même chose qu'avec deux colonnes : il suffit de les écrire dans SELECT et de les séparer par des virgules.

Nous faisons ensuite référence à la table dans FROM.

Nous devons maintenant afficher uniquement les employés dont le salaire est supérieur à 3 800. Pour ce faire, vous devez utiliser WHERE. Il s'agit d'une clause qui accepte des conditions et qui est utilisée pour filtrer les résultats. Elle parcourt le tableau et renvoie uniquement les données qui satisfont à la condition.

Dans notre cas, nous recherchons des salaires "supérieurs" à un certain nombre. En d'autres termes, une condition utilisant l'opérateur de comparaison >.

Pour définir la condition, nous écrivons le nom de la colonne à l'adresse WHERE. Vient ensuite l'opérateur de comparaison, puis la valeur à laquelle les données doivent être supérieures. Cette condition renverra tous les salaires supérieurs à 3 800.

Résultat

La requête renvoie quatre employés et leurs salaires. Comme vous pouvez le constater, ils ont tous un salaire supérieur à 3 800.

first_namelast_namesalary
TomPage5,974.41
ClaudiaConte4,714.12
LucaPavarotti4,123.45
VictoriaPollock4,789.53

5. Sélection de deux colonnes et filtrage à l'aide d'une condition d'égalité dans WHERE

Une fois de plus, cet exemple de requête SQL de base est utile lorsque vous souhaitez sélectionner plusieurs colonnes, mais pas toutes les lignes du tableau. Vous voulez maintenant trouver les valeurs qui sont identiques à la valeur de la condition. Pour cela, vous avez besoin de la condition d'égalité (=).

Requête

SELECT 
  first_name,
  last_name
FROM employees
WHERE first_name = 'Luca';

Explication

La requête sélectionne les noms et prénoms des employés.

Cependant, nous voulons afficher uniquement les employés dont le nom est Luca. Pour cela, nous utilisons à nouveau WHERE. L'approche est similaire à celle de l'exemple précédent : nous utilisons WHERE, écrivons le nom de la colonne et utilisons l'opérateur de comparaison. Cette fois, notre condition utilise le signe égal (=).

En d'autres termes, les valeurs de la colonne first_name doivent être égales à Luca. De plus, lorsque la condition n'est pas un nombre mais un texte ou une date/heure, elle doit être écrite entre guillemets simples (''). C'est pourquoi notre condition s'écrit 'Luca', et non simplement Luca.

Sortie

La sortie montre qu'il n'y a qu'un seul employé nommé Luca, et que son nom complet est Luca Pavarotti.

first_namelast_name
LucaPavarotti

6. Sélection de deux colonnes et classement par une colonne

Voici un autre exemple de requête SQL de base qui vous sera utile. Il peut être utilisé chaque fois que vous devez ordonner le résultat d'une certaine manière pour le rendre plus lisible.

L'ordre ou le tri des résultats est effectué à l'aide de la clause ORDER BY. Par défaut, elle ordonne les résultats par ordre croissant, par ordre alphabétique (pour les données textuelles), du plus petit au plus grand nombre (pour les données numériques), ou de la date ou de l'heure la plus ancienne à la plus récente (pour les dates et les heures).

Requête

SELECT 
  first_name,
  last_name
FROM employees
ORDER BY last_name;

Explication

Nous sélectionnons à nouveau le nom et le prénom des employés. Mais nous voulons maintenant trier les résultats d'une manière spécifique. Dans cet exemple, il s'agit du nom de famille des employés. Pour ce faire, nous utilisons ORDER BY. Nous y inscrivons simplement le nom de la colonne.

Nous pouvons ajouter le mot-clé ASC pour trier le résultat de manière ascendante. Cependant, ce n'est pas obligatoire, car le tri ascendant est une valeur par défaut de SQL.

Résultat

La requête renvoie une liste d'employés classés par ordre alphabétique de leur nom de famille.

first_namelast_name
ClaudiaConte
WalterDeer
AstridFox
PaulGarrix
MatthiasJohnson
StephanieMarx
TomPage
LucyPatterson
LucaPavarotti
VictoriaPollock

7. Sélection de deux colonnes et tri descendant d'une colonne

Cet exemple est similaire au précédent et a le même objectif : trier le résultat de votre requête SQL. Cependant, dans ce cas, les données sont classées par ordre décroissant (Z à A, 10 à 1).

Requête

SELECT 
  first_name,
  last_name
FROM employees
ORDER BY last_name DESC;

Explication

La requête est presque exactement la même que dans l'exemple précédent. La seule différence est que nous classons les données par ordre décroissant du nom de l'employé.

Pour ce faire, placez le mot-clé DESC après la colonne last_name dans la clause ORDER BY.

Résultat

first_namelast_name
VictoriaPollock
LucaPavarotti
LucyPatterson
TomPage
StephanieMarx
MatthiasJohnson
PaulGarrix
AstridFox
WalterDeer
ClaudiaConte

Vous pouvez voir que le résultat est ordonné comme nous le souhaitions.

8. Sélection de deux colonnes d'une table et classement décroissant de deux colonnes

Le tri d'une requête SQL peut être plus sophistiqué. Il est courant de trier des données sur deux colonnes ou plus, ce qui vous est probablement déjà familier en tant qu'utilisateur d'Excel ou de Google Sheets. Il est possible de faire la même chose en SQL.

Requête

SELECT 
  first_name,
  last_name,
  salary
FROM employees
ORDER BY salary DESC, last_name ASC;

Explication

Avec cette requête, nous nous appuyons sur l'exemple précédent ; nous voulons trier les résultats en fonction du salaire de l'employé et de son nom de famille. Cette fois, nous trions par salaire en ordre décroissant, puis par nom de famille en ordre croissant.

Nous référençons la colonne salaire dans ORDER BY et la faisons suivre du mot-clé DESC. Le mot-clé DESC indique l'ordre décroissant. Avant le deuxième critère de tri, nous devons placer une virgule. Elle est suivie du deuxième critère/colonne, qui est dans ce cas last_name. Vous pouvez ajouter ou omettre le mot-clé ASC pour trier le résultat par ordre croissant.

Remarque : l'ordre des colonnes dans ORDER BY est important ! La requête rédigée comme ci-dessus sera d'abord triée par salaire en ordre décroissant, puis par nom de famille en ordre croissant. Si vous écrivez ORDER BY last_name ASC, salary DESC, le tri se fera d'abord sur le nom de famille, puis sur le salaire, dans l'ordre décroissant.

Résultats

first_namelast_namesalary
TomPage5,974.41
VictoriaPollock4,789.53
ClaudiaConte4,714.12
LucaPavarotti4,123.45
WalterDeer3,547.25
PaulGarrix3,547.25
LucyPatterson3,547.25
MatthiasJohnson3,009.41
StephanieMarx2,894.51
AstridFox2,845.56

Les résultats sont classés par salaire. Lorsque le salaire est identique (lignes vertes), les données sont classées par ordre alphabétique du nom de famille.

9. Sélection de deux colonnes avec une condition logique complexe dans WHERE

Cet exemple montre à nouveau comment filtrer les résultats à l'aide de WHERE. Il sera un peu plus avancé cette fois-ci, car nous utiliserons un opérateur logique. En SQL, les opérateurs logiques vous permettent de tester si la condition de filtrage est vraie ou non. Ils permettent également de définir des conditions multiples.

Les trois opérateurs logiques de base en SQL sont AND, OR et NOT. Dans la requête ci-dessous, nous utiliserons OR pour obtenir les salaires inférieurs à 3 000 ou supérieurs à 5 000.

Requête

SELECT 
  first_name,
  last_name,
  salary
FROM employees
WHERE salary > 5000 OR salary < 3000;

Explication

Nous utilisons cette requête pour sélectionner le prénom, le nom et le salaire de l'employé dans la table employees.

Cependant, nous voulons afficher uniquement les employés dont les salaires sont supérieurs à 5 000 $ ou inférieurs à 3 000 $. Pour ce faire, nous utilisons l'opérateur logique OR et les opérateurs de comparaison de WHERE.

Nous écrivons la première condition dans WHERE, où nous faisons référence à la colonne salary et définissons la condition selon laquelle les valeurs doivent être supérieures à 5 000. Nous utilisons ensuite l'opérateur OR, suivi de la deuxième condition. La deuxième condition fait à nouveau référence à la colonne des salaires et utilise l'opérateur "inférieur à" pour renvoyer les valeurs inférieures à 3 000.

Sortie

first_namelast_namesalary
AstridFox2,845.56
TomPage5,974.41
StephanieMarx2,894.51

La requête ne renvoie que trois employés et leurs salaires, car ce sont les seuls qui remplissent les conditions.

10. Calculs simples sur les colonnes

Dans cet exemple, nous allons montrer comment vous pouvez effectuer des opérations mathématiques simples sur les colonnes de la table.

Nous utiliserons l'un des opérateurs arithmétiques de SQL.

Arithmetic OperatorDescription
+Addition
-Subtraction
*Multiplication
/Division
%Modulo, i.e. returns the remainder of the integer division.

Requête

SELECT 
  employee_id,
  q1_2022 + q2_2022 AS h1_2022
FROM quarterly_sales;

Explication

Dans la requête ci-dessus, nous voulons trouver les ventes du premier semestre 2022 pour chaque employé.

Pour ce faire, nous sélectionnons d'abord la colonne employee_id dans la table quarterly_sales.

Ensuite, nous sélectionnons la colonne q1_2022 et utilisons l'opérateur arithmétique d'addition pour ajouter la colonne q2_2022. Nous donnons également à cette nouvelle colonne calculée un alias de h1_2022 en utilisant le mot-clé AS.

Résultat

employee_idh1_2022
818,260.66
418,264.04
102,817.18
117,181.20
337,558.82
210,092.45
733,695.03
611,240.08
513,905.29
98,586.86

La sortie montre les identifiants de tous les employés et leurs ventes respectives au cours du premier semestre 2022.

11. Utilisation de SUM() et GROUP BY

Cette requête utilise la fonction d'agrégation SUM() avec GROUP BY. En SQL, les fonctions d'agrégation fonctionnent sur des groupes de données ; par exemple, SUM(sales) affiche le total de toutes les valeurs de la colonne sales. Il est utile de connaître cette fonction lorsque vous voulez placer des données dans des groupes et afficher le total pour chaque groupe.

Requête

SELECT 
  department,
  SUM(salary) AS total_salaries
FROM employees
GROUP BY department;

Explication

L'objectif de la requête ci-dessus est de trouver le montant total des salaires pour chaque département. Cet objectif est atteint de la manière suivante.

Tout d'abord, sélectionnez la colonne département dans le tableau employees. Ensuite, utilisez la fonction SUM(). Comme nous voulons additionner les valeurs salariales, nous spécifions la colonne salaire dans la fonction. De plus, nous donnons à cette colonne calculée l'alias total_salaries.

Enfin, la sortie est groupée par la colonne département.

Remarque : toute colonne non agrégée apparaissant dans SELECT doit également apparaître dans GROUP BY. Mais c'est logique - l'objectif est de regrouper les données par département, donc nous la placerons bien sûr dans GROUP BY.

Sortie

departmenttotal_salaries
Corporate21,919.82
Private Individuels17,072.92

La sortie montre tous les départements et la somme des coûts salariaux mensuels totaux par département.

12. Utilisation de COUNT() et GROUP BY

Voici une autre requête SQL de base qui utilise une fonction d'agrégation. Cette fois, il s'agit de COUNT(). Vous pouvez l'utiliser si vous souhaitez regrouper des données et afficher le nombre d'occurrences dans chaque groupe.

Requête

SELECT 
  department,
  COUNT(*) AS employees_by_department
FROM employees
GROUP BY department; 

Explication

Nous voulons afficher le nombre d'employés par département.

Sélectionnez le département dans le tableau employees. Ensuite, utilisez la fonction d'agrégation COUNT(). Dans ce cas, nous utilisons la version COUNT(*), qui compte toutes les lignes. Nous donnons à la colonne l'alias employees_by_department.

Enfin, nous regroupons les résultats par département.

Note : COUNT(*) compte toutes les lignes, y compris celles avec les valeurs NULL. Si vous ne souhaitez pas inclure les éventuelles valeurs NULL dans votre résultat, utilisez la version COUNT(column_name) de la fonction. Nous pouvons utiliser COUNT(*) ici car nous savons qu'il n'y a pas de valeurs NULL dans le tableau.

Résultat

departmentemployees_by_department
Corporate5
Private Individuels5

Il y a deux départements, chacun avec cinq employés.

13. Utilisation de AVG() et GROUP BY

La fonction AVG() calcule la valeur moyenne. Vous pouvez utiliser cette requête chaque fois que vous souhaitez regrouper des données et afficher la valeur moyenne pour chaque groupe.

Requête

SELECT 
  department,
  AVG(salary) AS average_salary
FROM employees
GROUP BY department; 

Explication

La requête est la même que la précédente, mais cette fois nous utilisons la fonction AVG(), car nous voulons calculer le salaire moyen par département.

Nous sélectionnons le département, utilisons AVG() avec la colonne salary et regroupons les résultats par département.

Résultat

departmentaverage_salary
Corporate4,383.96
Private Individuels3,414.58

La sortie montre deux départements et leurs salaires moyens.

14. Utilisation de MIN() et de GROUP BY

Il s'agit d'une autre requête qui combine une fonction d'agrégation avec GROUP BY. Utilisez-la chaque fois que vous souhaitez trouver les valeurs minimales pour chaque groupe.

Requête

SELECT 
  department,
  MIN(salary) AS minimum_salary
FROM employees
GROUP BY department;

Explication

Nous utilisons à nouveau la même requête et modifions uniquement la fonction d'agrégation.

La requête calcule le salaire minimum par département.

Résultats

departmentminimum_salary
Corporate2,894.51
Private Individuels2,845.56

La sortie montre les départements et le salaire le plus bas dans chaque département.

15. Utilisation de MAX() et de GROUP BY

Cet exemple montre comment utiliser la fonction d'agrégation MAX() pour afficher la valeur la plus élevée dans chaque groupe.

Requête

SELECT 
  department,
  MAX(salary) AS maximum_salary
FROM employees
GROUP BY department;

Explication

Nous utilisons la requête pour afficher le salaire le plus élevé dans chaque département, ainsi que le nom du département.

Vous savez déjà comment cela fonctionne. La requête est la même que dans l'exemple précédent, mais elle utilise maintenant la fonction MAX().

Résultat

departmentmaximum_salary
Corporate5,974.41
Private Individuels4,123.45

La sortie nous indique les salaires les plus élevés dans le département "Entreprises et particuliers" Individuel.

16. Utilisation de SUM(), WHERE et GROUP BY

Cette requête peut sembler plus compliquée, mais il s'agit toujours d'une requête SQL de base. Elle est utilisée lorsque vous souhaitez afficher les valeurs totales pour chaque groupe, mais que vous ne voulez inclure que des lignes spécifiques dans la somme.

Requête

SELECT 
  department,
  SUM(salary) AS total_salary
FROM employees
WHERE salary > 3500
GROUP BY department;

Explication

La requête affichera le salaire total par département, mais n'inclura dans la somme que les salaires individuels supérieurs à 3 500 $. Voici comment cela fonctionne.

Tout d'abord, bien sûr, sélectionnez les départements et utilisez SUM() avec la colonne des salaires de la table employees. Vous l'avez déjà appris.

Ensuite, utilisez la clause WHERE pour spécifier les valeurs que vous voulez inclure dans la somme. Dans le cas présent, il s'agit des cas où la colonne salaire est supérieure à 3 500. En d'autres termes, la requête n'additionnera que les valeurs supérieures à 3 500.

Enfin, regroupez les données par département.

Résultat

departmenttotal_salary
Private Individuels11,217.95
Corporate19,025.31

Ces totaux n'incluent plus que les salaires supérieurs à 3 500 $. Comparez ce résultat à celui du onzième exemple (illustré ci-dessous ; remarquez le tri différent), et vous verrez que les totaux sont inférieurs. C'est logique, car la sortie ci-dessous inclut également les salaires inférieurs ou égaux à 3 500 $.

departmenttotal_salaries
Corporate21,919.82
Private Individuels17,072.92

17. Utilisation de COUNT(), WHERE et GROUP BY

Cette requête fait également partie de celles que nous vous conseillons d'inclure dans votre boîte à outils SQL. Elle est similaire à la précédente, car elle utilise une fonction d'agrégation. Ce type de requête peut être utilisé lorsque vous souhaitez afficher le nombre d'occurrences pour chaque groupe.

Requête

SELECT 
  department,
  COUNT(*) AS number_of_employees
FROM employees
WHERE salary > 3500
GROUP BY department;

Explication

Cette requête est similaire à la précédente, mais elle utilise la fonction d'agrégation COUNT(). Son objectif est d'afficher le nom du département et le nombre d'employés dans ce département, mais elle ne compte que les employés dont le salaire est supérieur à 3 500 $.

Pour y parvenir, il faut d'abord sélectionner le département. Ensuite, utilisez COUNT(*) pour compter toutes les lignes de chaque département. Chaque ligne correspond à un employé. Nous sommes libres d'utiliser cette version de la fonction COUNT() car nous savons qu'il n'y a pas de lignes NULL.

Utilisez maintenant WHERE pour ne compter que les employés dont le salaire est supérieur à 3500 $.

En fin de compte, vous n'avez besoin de regrouper les données que par département.

Résultat

departmentnumber_of_employees
Private Individuels3
Corporate4

Le résultat montre qu'il y a trois employés dans le département "Private Individuel" dont le salaire est supérieur à 3 500 $ et qu'il y a quatre employés de ce type dans le département "Corporate".

Certains employés sont manifestement absents, comme il se doit. Nous avons appris dans l'un des exemples précédents qu'il y a cinq employés dans chaque département.

18. Accès aux données de deux tables à l'aide d'une jointure interne (INNER JOIN)

Ce type de requête est utilisé lorsque vous souhaitez accéder à des données provenant de deux tables ou plus. Nous allons vous présenter INNER JOIN, mais ce n'est pas le seul type de jointure que vous pouvez utiliser.

Voici un bref aperçu des types de jointures en SQL. Il s'agit des noms complets des jointures. Ce qui est indiqué entre parenthèses peut être omis dans la requête et la jointure fonctionnera sans cela.

SQL Join TypeDescription
(INNER) JOINReturns the matching values from both tables.
LEFT (OUTER) JOINReturns all the values from the left table and only the matching values from the right table.
RIGHT (OUTER) JOINReturns all the values from the right table and only the matching values from the left table.
FULL (OUTER) JOINReturns all the rows from both tables.
CROSS JOINReturns all combinations of all rows from the first and second table, i.e. the Cartesian product.

Requête

SELECT 
  e.id,
  e.first_name,
  e.last_name,
  qs.q1_2022 + qs.q2_2022 + qs.q3_2022 + qs.q4_2022 AS total_sales_2022
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id;

Explication

Cette requête veut afficher l'ID et le nom de chaque employé, ainsi que leur chiffre d'affaires total en 2022.

Pour cela, elle utilise JOIN, car les données requises se trouvent dans les deux tables de notre ensemble de données.

Commençons par expliquer la requête avec la clause FROM. Elle est familière : pour utiliser les données de la table employeesvous devez y faire référence dans FROM. Nous donnons également à cette table un alias ('e'), afin de ne pas avoir à écrire le nom complet de la table par la suite.

Ensuite, nous utilisons le mot-clé JOIN pour joindre la deuxième table. Pour ce faire, nous référençons la table quarterly_sales dans JOIN et en lui donnant l'alias 'qs'.

Vient ensuite la condition ON. Elle est utilisée pour spécifier les colonnes sur lesquelles les deux tables seront jointes. En général, il s'agit des colonnes qui stockent les mêmes données dans les deux tables. En d'autres termes, nous joignons les tables sur les clés primaires et étrangères. Une clé primaire est une colonne (ou des colonnes) qui définit de manière unique chaque ligne de la table. Une clé étrangère est une colonne de la deuxième table qui fait référence à la première table. Dans notre exemple, la colonne id de la table employees est sa clé primaire. La colonne employee_id de la table quarterly_sales est la clé étrangère, car elle contient la valeur de la colonne id de la première table.

Nous utiliserons donc ces colonnes dans ON, mais nous devons également spécifier de quelle table provient chaque colonne. Rappelez-vous que nous avons donné des alias à nos tables. Cela sera utile ici, car nous n'aurons pas besoin d'écrire les noms complets des tables - seulement une lettre pour chaque table. Nous écrivons l'alias de la première table (au lieu de son nom complet), nous les séparons par un point, puis le nom de la colonne. Nous mettons le signe égal, l'alias de la deuxième table et le nom de la colonne.

Maintenant que nous avons joint deux tables, nous sommes libres de sélectionner n'importe quelle colonne dans les deux tables. Nous sélectionnons id, first_name, et last_name à partir de employees. Nous ajoutons ensuite chaque colonne de la table quarterly_sales indiquant les ventes trimestrielles et nous la nommons total_sales_2022. Chaque colonne de SELECT est également précédée de l'alias de la table, l'alias et le nom de la colonne étant séparés par un point.

Remarque : lors de la jonction de tables, il est conseillé d'utiliser les noms des tables devant les noms des colonnes dans SELECT est conseillée. Il sera ainsi plus facile de déterminer quelle colonne provient de quelle table. En outre, les tables peuvent avoir des colonnes portant le même nom. Cependant, les noms de tables peuvent devenir verbeux, c'est pourquoi il est également conseillé de leur donner des alias dans JOIN. De cette façon, vous pouvez utiliser des alias beaucoup plus courts (au lieu des noms complets des tables) devant les noms des colonnes.

Résultats

idfirst_namelast_nametotal_sales_2022
8StephanieMarx22,993.23
4LucyPatterson30,595.57
10VictoriaPollock6,770.16
1PaulGarrix45,443.38
3MatthiasJohnson58,233.67
2AstridFox20,312.48
7WalterDeer62,774.59
6ClaudiaConte17,734.94
5TomPage28,637.65
9LucaPavarotti25,023.21

La sortie répertorie chaque employé et indique le total de ses ventes en 2022.

19. Accès aux données de deux tables à l'aide de la fonction INNER JOIN et filtrage à l'aide de la fonction WHERE

Bien entendu, vous pouvez filtrer les données dans des tables jointes de la même manière qu'avec une seule table. Vous aurez à nouveau besoin de la clause WHERE.

Requête

SELECT
  e.id,
  e.first_name,
  e.last_name,
  qs.q4_2022-qs.q3_2022 AS sales_change
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id
WHERE qs.q4_2022-qs.q3_2022 < 0;

Explication

Nous avons modifié la requête précédente pour montrer la diminution des ventes entre le troisième et le quatrième trimestre.

Voici comment nous avons procédé. Comme nous l'avons fait précédemment, nous avons sélectionné l'ID et le nom de l'employé.

Nous avons soustrait un trimestre d'un autre pour calculer la variation entre les trimestres. Dans ce cas, il s'agit de la colonne des ventes du quatrième trimestre moins les ventes du troisième trimestre. Cette nouvelle colonne s'appelle sales_change.

Les tableaux sont reliés exactement de la même manière que dans l'exemple précédent.

Pour ne montrer que la baisse des ventes, nous utilisons la clause WHERE. Dans cette clause, nous soustrayons à nouveau le troisième trimestre du quatrième et posons comme condition que le résultat doit être inférieur à zéro, c'est-à-dire qu'il doit s'agir d'une baisse. Comme vous l'avez remarqué, WHERE intervient après la jointure des tables.

Résultats

idfirst_namelast_namesales_change
8StephanieMarx-2,224.11
4LucyPatterson-5,151.55
1PaulGarrix-21,233.46
3MatthiasJohnson-3,771.83
7WalterDeer-189.32
6ClaudiaConte-1,500.44
9LucaPavarotti-1,138.55

Le résultat indique tous les employés dont les ventes ont diminué au cours du dernier trimestre et le montant de cette diminution.

20. Accès aux données de deux tables à l'aide de la fonction INNER JOIN, du filtrage à l'aide de la fonction WHERE et du tri à l'aide de la fonction ORDER BY

Vous avez probablement remarqué que les résultats de nos deux derniers exemples sont triés de manière un peu aléatoire. Ce n'est pas une fatalité : vous pouvez ordonner les données à l'aide de ORDER BY, même lorsque vous utilisez deux tables.

Requête

SELECT 
  e.id,
  e.first_name,
  e.last_name,
  qs.q4_2022
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id
WHERE qs.q4_2022 > 5000
ORDER BY qs.q4_2022 DESC;

Explication

La requête n'est pas très différente de la précédente. Nous sélectionnons à nouveau l'ID et le nom de l'employé. Nous ajoutons également les ventes du dernier trimestre de l'année. Les tables sont ensuite reliées de la même manière que précédemment. Nous utilisons la clause WHERE pour n'afficher que les ventes trimestrielles supérieures à 5 000 $.

Nous voulons également trier les résultats. Ce n'est pas différent de ce que nous avons appris précédemment : il suffit d'écrire le nom de la colonne dans ORDER BY et de la trier comme vous le souhaitez. Dans notre exemple, nous trions du chiffre d'affaires trimestriel le plus élevé au plus bas.

Résultat

idfirst_namelast_nameq4_2022
7WalterDeer14,445.12
3MatthiasJohnson8,451.51
5TomPage7,788.01
9LucaPavarotti7,648.90
2AstridFox5,322.05

La sortie affiche les cinq employés dont les ventes ont été supérieures à 5 000 $ au cours des trois derniers mois de 2022.

Des requêtes SQL de base à la maîtrise de SQL

Si vous voulez maîtriser le langage SQL, vous devez être à l'aise avec ces 20 requêtes SQL de base. Ce sont les bases qui vous permettront d'acquérir de solides connaissances en SQL.

Ce type de connaissances s'acquiert avec beaucoup de pratique et d'expérience. En d'autres termes, il vous suffit d'écrire les requêtes vous-même. Vous consoliderez ainsi tous les concepts que vous avez appris ici. En cours de route, vous ferez probablement beaucoup d'erreurs. C'est souhaitable, car il n'y a pas de meilleure façon d'apprendre que d'essayer de corriger ses propres erreurs.

Pour cela, vous aurez besoin de nombreux exemples de requêtes. Non, il n'est pas nécessaire de créer vos propres exemples, comme nous l'avons fait ici. Vous pouvez le faire si vous le souhaitez. Mais nous l'avons déjà fait pour vous dans notre SQL pour les débutants cours.

Il regorge d'exemples de requêtes SQL de base ! Essayez-le, et nous sommes sûrs que vous ne le regretterez pas !