23rd Jun 2024 9 minutes de lecture Top 9 des questions d'entretien SQL GROUP BY Tihomir Babic sql apprendre sql group by emplois et carrières Table des matières Questions d'entretien de base sur le GROUP BY 1 : Qu'est-ce que le GROUP BY fait-il ? 2 : Utilisez la table film_streaming pour écrire trois requêtes. 2a : Trouver le nombre total de streams par date. 2b : Trouvez le nombre total de flux par date et director. 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. 3 : Comment filtrer les groupes dans une requête SQL ? 4 : Quelle est la différence entre WHERE et HAVING en SQL ? Questions d'entretien intermédiaires et avancées sur le GROUP BY 5 : Quelles fonctions peuvent être utilisées avec GROUP BY ? 6 : Quelle est la différence entre COUNT(*), COUNT(expression), et COUNT(DISTINCT expression)? 7 : Qu'advient-il de la valeur NULL lorsque vous utilisez la fonction GROUP BY? 8 : Que renvoie ce code ? 9 : Que sont les GROUP BY ? Qu'est-ce que le GROUP BY connaissez-vous ? Préparez-vous à votre entretien d'embauche en SQL ! 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 ! Tags: sql apprendre sql group by emplois et carrières