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

Comment sélectionner les deux premières lignes de chaque groupe dans SQL ?

Mary-Kate Olsen
Libérer: 2024-12-31 15:13:13
original
570 Les gens l'ont consulté

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

Sélection des deux premières lignes de chaque groupe SQL

En SQL, une tâche courante consiste à récupérer uniquement les premières lignes de chaque groupe. Cependant, les fonctions d'agrégation standard pour le regroupement (telles que MAX() et MIN()) permettent uniquement la sélection de la valeur la plus élevée ou la plus basse.

Requête pour sélectionner les deux meilleurs scores par nom :

Pour relever ce défi, une requête plus complexe est nécessaire. Voici un exemple de la façon de sélectionner les deux meilleurs scores pour chaque nom dans le tableau fourni :

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

Explication :

  • La requête externe (SELECT * ...) récupère toutes les lignes de la table de test.
  • La sous-requête (SELECT COUNT(*) ...) détermine le nombre d'enregistrements existants pour chaque nom de la table de test avec un score égal ou supérieur au score de la ligne actuelle.
  • La clause WHERE filtre ensuite les lignes de la requête externe en garantissant que le nombre de la sous-requête est inférieur ou égal à 2.

Exemple de résultat :

La requête ci-dessus renvoie ce qui suit sortie :

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
Copier après la connexion

Cette sortie inclut les deux meilleurs scores pour chaque nom dans le tableau, comme demandé.

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