Retour à la liste des articles Articles
9 minutes de lecture

Top 9 des questions d'entretien SQL GROUP BY

Vous vous préparez à un entretien d'embauche en SQL ? Ce guide vous guidera à travers neuf questions de base, intermédiaires et avancées sur le GROUP BY auxquelles vous pourriez avoir à répondre.

Certaines questions GROUP BY reviennent souvent dans les entretiens d'embauche en SQL ; dans cet article, nous vous expliquons comment y répondre. Si vous êtes un analyste de données ou un autre professionnel des données qui se prépare à un entretien, cet article a pour but de vous aider. Bien entendu, toute personne intéressée par SQL et la clause GROUP BY peut également lire ces questions. Vous apprendrez probablement quelque chose de nouveau et d'intéressant sur cette clause populaire.

Cet article est divisé en deux sections : les questions de base et les questions intermédiaires/avancées. Cette approche progressive reflète également nos cours qui couvrent la clause GROUP BY, y compris notre coursSQL pour les débutants . En 129 exercices interactifs, il introduit d'importants sujets SQL de base, tels que GROUP BY, JOINs, WHERE, et les opérations ensemblistes (UNION, INTERSECT, EXCEPT).

Les nuances intermédiaires et avancées de GROUP BY sont couvertes dans notre coursCréation de rapports basiques en SQL . Vous y apprendrez à agréger des données, à utiliser l'instruction CASE WHEN, à créer des mesures, des ratios et des comparaisons de données plus complexes, et à travailler avec des expressions de tableau communes (CTE). Pour en savoir plus, consultez cet article sur le cours Création de rapports basiques en SQL .

Commençons ce tour d'horizon par quelques questions d'entretien de base !

Questions d'entretien de base sur le GROUP BY

1 : Qu'est-ce que le GROUP BY fait-il ?

La clause GROUP BY de SQL organise les résultats de la requête en groupes, toutes les lignes ayant la même valeur dans une colonne donnée appartenant à un groupe. Par exemple, si vous disposez d'une table qui stocke des données sur les employés, vous pouvez compter les employés par département ou trouver le salaire moyen pour chaque département. La fonction GROUP BY est généralement utilisée avec les fonctions d'agrégation telles que COUNT(), SUM(), AVG(), MIN(), MAX().

Vous trouverez un aperçu plus complet de GROUP BY dans notre article Comment fonctionne le GROUP BY SQL ?

2 : Utilisez la table film_streaming pour écrire trois requêtes.

Il est courant que l'interviewer demande au candidat d'écrire une requête en utilisant la clause GROUP BY. Nous allons présenter trois exemples illustrant des sujets courants de GROUP BY.

La table movie_streaming contient des statistiques sur le nombre de fois qu'un film a été visionné chaque jour.

iddatemoviedirectornumber_of_streams
12022-04-01FargoCoen brothers495
22022-04-01The Big LebowskiCoen brothers512
32022-04-01No Country for Old MenCoen brothers270
42022-04-01DogtoothYorgos Lanthimos157
52022-04-01The LobsterYorgos Lanthimos247
62022-04-01The Killing of a Sacred DeerYorgos Lanthimos320
72022-04-02FargoCoen brothers321
82022-04-02The Big LebowskiCoen brothers905
92022-04-02No Country for Old MenCoen brothers308
102022-04-02DogtoothYorgos Lanthimos233
112022-04-02The LobsterYorgos Lanthimos405
122022-04-02The Killing of a Sacred DeerYorgos Lanthimos109

2a : Trouver le nombre total de streams par date.

Cette question vous demande de regrouper les données en fonction d'une seule colonne :

SELECT date,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date;

Le code produit sera le suivant :

datetotal_number_of_streams
2022-04-012,001
2022-04-022,281

Le regroupement est effectué sur la colonne date, et la fonction d'agrégation SUM() est utilisée pour obtenir le nombre de flux par date.

2b : Trouvez le nombre total de flux par date et director.

Pour répondre à cette question, les données doivent être regroupées par deux colonnes. Pour ce faire, les colonnes date et director doivent être indiquées dans GROUP BY et séparées par une virgule.

SELECT date,
	 director,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date, director;

C'est ce que le code renvoie :

datedirectortotal_number_of_streams
2022-04-01Yorgos Lanthimos724
2022-04-02Coen brothers1,534
2022-04-02Yorgos Lanthimos747
2022-04-01Coen brothers1,277

2c : Trouver le nombre total de flux par date et par directeur. N'afficher que les dates pour lesquelles le nombre total de streams est supérieur à 740.

SELECT date,
	 director,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date, director
HAVING SUM(number_of_streams) > 740;

Les données sont à nouveau regroupées dans les colonnes date et director. La clause HAVING et la fonction SUM() sont utilisées pour n'afficher que les flux totaux supérieurs à 740. (SUM() additionne le nombre de flux quotidiens ; HAVING filtre les flux qui n'atteignent pas le nombre minimum).

L'exécution de la requête permet d'obtenir le résultat suivant

datedirectortotal_number_of_streams
2022-04-02Coen brothers1,534
2022-04-02Yorgos Lanthimos747
2022-04-01Coen brothers1,277

Vous trouverez plus de détails sur ces concepts dans cet article expliquant le fonctionnement de GROUP BY.

3 : Comment filtrer les groupes dans une requête SQL ?

Les groupes dans une requête SQL sont filtrés à l'aide de la clause HAVING. HAVING ne peut pas être utilisée sans GROUP BY; elle est toujours écrite après GROUP BY, et son but est de filtrer les données résultant d'une fonction d'agrégation - par exemple, trouver des groupes dont le compte est supérieur à un nombre spécifié, etc.

Il est important de noter que la clause WHERE est également utilisée pour le filtrage dans une requête SQL. Alors que HAVING est utilisé pour filtrer les groupes, WHERE filtre les lignes. En d'autres termes, WHERE filtre les données avant qu'elles ne soient agrégées.

4 : Quelle est la différence entre WHERE et HAVING en SQL ?

WHERE et HAVING sont tous deux utilisés pour filtrer les données dans une requête SQL. La principale différence est que WHERE est utilisé pour les valeurs non agrégées, tandis que HAVING est utilisé pour les valeurs agrégées. L'ordre d'exécution est le suivant : WHERE - GROUP BY - HAVING. Cela signifie également que WHERE est écrit avant GROUP BY, tandis que HAVING vient après GROUP BY.

Dans la pratique, WHERE filtre d'abord les données. Ces données filtrées seront groupées et agrégées, puis HAVING filtrera les données groupées et agrégées.

Par exemple, vous pouvez utiliser WHERE pour filtrer uniquement les utilisateurs employés depuis plus d'un an. Vous pouvez ensuite calculer le salaire moyen des employés ayant plus d'un an d'expérience par département. Enfin, vous pouvez afficher uniquement les départements dont le salaire moyen est supérieur à une valeur spécifique à l'aide de la clause HAVING. De cette façon, vous filtrez les lignes avant et après la fonction d'agrégation. Consultez cet article pour une explication détaillée des différences entre WHERE et HAVING .

Questions d'entretien intermédiaires et avancées sur le GROUP BY

5 : Quelles fonctions peuvent être utilisées avec GROUP BY ?

La clause GROUP BY est généralement utilisée avec les fonctions d'agrégation de SQL. Celles-ci prennent les valeurs de chaque ligne, effectuent un calcul et renvoient une valeur unique. Voici quelques-unes des fonctions d'agrégation les plus utilisées :

  • SUM() - Additionne toutes les valeurs des lignes.
  • COUNT() - Compte le nombre de lignes.
  • AVG() - Renvoie la valeur moyenne.
  • MIN() - Renvoie la plus petite valeur.
  • MAX() - Renvoie la plus grande valeur.

6 : Quelle est la différence entre COUNT(*), COUNT(expression), et COUNT(DISTINCT expression)?

COUNT(*) renvoie le nombre de lignes, y compris les lignes dupliquées et les lignes avec des valeurs NULL.

Ceci est différent de COUNT(expression), qui renvoie uniquement le nombre de lignes avec des valeurs autres queNULL. Il compte également les lignes avec des valeurs dupliquées.

Si vous ajoutez le mot-clé DISTINCT, les lignes en double seront ignorées, de même que les lignes contenant des valeurs NULL. Vous obtenez ainsi le nombre de lignes uniques ou distinctes.

Cet article sur les trois utilisations de la fonction COUNT() explique les différences plus en détail.

7 : Qu'advient-il de la valeur NULL lorsque vous utilisez la fonction GROUP BY?

La clause GROUP BY n'ignore pas les valeurs NULL. Par conséquent, si vous l'utilisez et que la colonne contient des valeurs NULL, toutes les lignes contenant des valeurs NULL seront traitées comme un seul groupe.

Comment cela fonctionne-t-il en pratique ? Voici une explication plus détaillée de GROUP BY et de NULL, ainsi que des exemples pratiques.

8 : Que renvoie ce code ?

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

Ce code renverra une erreur parce que la colonne month n'est pas écrite dans la déclaration GROUP BY. L 'erreur se produit parce que toutes les colonnes apparaissant dans la déclaration SELECT doivent apparaître dans la déclaration GROUP BY. Cette erreur "not a GROUP BY expression" doit être corrigée.

Pour que le code fonctionne, il doit être écrit comme suit :

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

Cette requête produira le salaire moyen par mois et par département.

Cependant, toutes les colonnes apparaissant dans la clause GROUP BY n'ont pas besoin d'apparaître dans l'instruction SELECT. Par conséquent, le code ci-dessus pourrait ressembler à ceci et ne pas renvoyer d'erreur :

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

Bien que ce code fonctionne et renvoie les valeurs moyennes correctes, le fait de ne pas afficher les informations relatives au mois signifie qu'il sera impossible de déchiffrer quel salaire moyen se rapporte à quel mois.

9 : Que sont les GROUP BY ? Qu'est-ce que le GROUP BY connaissez-vous ?

GROUP BY Les extensions de GROUP BY améliorent les possibilités de la clause GROUP BY, permettant la création de rapports plus complexes par le biais d'un regroupement de données plus sophistiqué.

Ces extensions sont ROLLUP, CUBE et GROUPING SETS. L'extension ROLLUP est le plus souvent utilisée pour calculer des sous-totaux dans des données hiérarchiques. Elle prend en compte la relation hiérarchique entre les données et crée des sous-totaux pour chaque niveau et un total général.

L'extension CUBE est similaire, mais elle crée toutes les combinaisons de données possibles et renvoie leurs sous-totaux et un total général.

La troisième extension, GROUPING SETS, permet d'écrire les multiples clauses GROUP BY dans une seule clause GROUP BY. Cela provient d'une définition d'un ensemble de regroupement, qui est un groupe de colonnes par lesquelles vous souhaitez regrouper vos données.

Pour voir comment ces extensions fonctionnent en pratique, vous devriez consulter le cours GROUP BY Extensions.

Préparez-vous à votre entretien d'embauche en SQL !

Ceci a été un aperçu des questions d'entretien SQL les plus courantes, axées sur la clause GROUP BY.

GROUP BY est un concept important. Si vous ne l'utilisez pas comme si c'était votre seconde nature, vous ne pourrez pas impressionner lors de l'entretien d'embauche. Cet article vous a donné une bonne idée de ce à quoi vous pouvez vous attendre.

Mais il ne suffit pas de connaître les concepts. Vous avez également besoin de pratique, et la pratique signifie écrire beaucoup de code en utilisant le site GROUP BY. Notre SQL pour les débutants et Création de rapports basiques en SQL vous donneront une occasion structurée de faire exactement cela !