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
Libérer: 2024-12-29 11:05:11
original
598 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal