Aller au contenu

SQL : filtres, jointures et regroupements

SQL · Débutant · 10 questions. Choisissez une réponse par question, puis consultez les explications.

  • 1. Quelle clause filtre les lignes avant un regroupement ?
  • 2. Quel test sélectionne les inscriptions dont email est NULL ?
  • 3. Une table contient trois lignes dont deux ont un email non NULL. Que vaut COUNT(email) ?
  • 4. Pour ces mêmes trois lignes, que vaut COUNT(*) ?
  • 5. Quelle clause demande un tri décroissant par note ?
  • 6. Que conserve un INNER JOIN entre apprenants et inscriptions sur leur identifiant ?
  • 7. Quel JOIN garde tous les apprenants placés à gauche, même sans inscription ?
  • 8. Quelle clause filtre les groupes ayant COUNT(*) supérieur à 5 ?
  • 9. Comment obtenir les différentes villes, sans répétition, de la table apprenants ?
  • 10. La table notes contient (A,10), (A,14), (B,18). Quelle moyenne obtient le groupe A ?
Corrigé à lire, même sans JavaScript
  1. WHERE. WHERE choisit les lignes d’entrée avant le calcul des groupes.
  2. email IS NULL. NULL indique une valeur absente ; IS NULL est le test adapté.
  3. 2. COUNT(colonne) ne compte que les valeurs non NULL.
  4. 3. COUNT(*) compte les lignes, même si certaines colonnes sont NULL.
  5. ORDER BY note DESC. ORDER BY définit l’ordre du résultat ; DESC demande un ordre décroissant.
  6. Les paires de lignes qui satisfont la condition de jointure. Une ligne sans correspondance n’apparaît pas dans une jointure interne.
  7. LEFT JOIN. Les colonnes de la table droite valent NULL en l’absence de correspondance.
  8. HAVING COUNT(*) > 5. HAVING applique un critère après le regroupement et le calcul des agrégats.
  9. SELECT DISTINCT ville FROM apprenants. DISTINCT élimine les lignes identiques du résultat ; trier ne les élimine pas.
  10. 12. GROUP BY groupe rassemble les deux notes de A ; leur moyenne est (10 + 14) / 2.

Revoir le cours · Documentation de référence

Complément de documentation