Maison >base de données >tutoriel mysql >Comment obtenir les deux premières lignes de chaque groupe dans SQL ?

Comment obtenir les deux premières lignes de chaque groupe dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 11:05:11629parcourir

How to Get the Top Two Rows for Each Group in SQL?

Obtenir les deux premières lignes de chaque groupe dans SQL

Les requêtes SQL permettent aux utilisateurs d'extraire des données spécifiques des tables, mais que se passe-t-il si vous en avez besoin sélectionner les deux premières lignes de chaque groupe ? Ce scénario peut être rencontré lorsque vous souhaitez analyser les enregistrements les plus performants ou récupérer plusieurs valeurs au sein d'un groupe.

Considérons le tableau suivant à titre d'exemple :

NAME SCORE
willy 1
willy 2
willy 3
zoe 4
zoe 5
zoe 6

Pour récupérer le les deux scores les plus élevés pour chaque nom, nous pouvons utiliser la requête SQL suivante :

SELECT *
FROM test s
WHERE
    (
        SELECT COUNT(*)
        FROM test f
        WHERE f.name = s.name AND
              f.score >= s.score
    ) <= 2

Voici comment la requête fonctionne :

  • La requête externe (SELECT * FROM test s) sélectionne toutes les lignes de la table de test.
  • La requête interne, entre parenthèses, calcule le nombre de lignes dans le table de test avec un nom donné et un score supérieur ou égal au score de la ligne actuelle (f.score >= s.score).
  • Le La clause WHERE de la requête externe filtre les lignes en fonction du nombre de la requête interne. Seules les lignes dont le nombre est inférieur ou égal à 2 sont sélectionnées. Cela garantit que nous obtenons les deux meilleurs scores pour chaque groupe.
  • Le résultat attendu pour cette requête est le suivant :

    NAME SCORE
    willy 2
    willy 3
    zoe 5
    zoe 6

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn