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

Comment sélectionner les N premières lignes pour chaque groupe dans SQL ?

Barbara Streisand
Libérer: 2024-12-31 08:42:10
original
717 Les gens l'ont consulté

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

N premières lignes pour chaque groupe en SQL

En SQL, la sélection des premières lignes de chaque groupe peut être effectuée à l'aide de fonctions de fenêtre. Les fonctions de fenêtre permettent d'effectuer des calculs sur un ensemble de lignes, appelé fenêtre, définies par un ordre et une partition spécifiés. Dans ce cas, nous souhaitons sélectionner les deux premières lignes de chaque groupe, ce qui peut être réalisé en suivant les étapes suivantes :

  1. Partitionnez les données : Définissez les groupes pour lesquels vous souhaitez sélectionner les lignes supérieures à l’aide de la clause PARTITION BY. Dans cet exemple, nous souhaitons regrouper les données par colonne NOM.
  2. Classez les lignes dans chaque groupe : Utilisez la fonction de fenêtre ROW_NUMBER() pour attribuer un numéro séquentiel à chaque ligne de chaque groupe, en commençant par 1. Cela nous fournira le rang de chaque ligne au sein de son groupe.
  3. Filtrer le haut lignes : Appliquez un filtre pour sélectionner uniquement les lignes qui ont un rang de 1 ou 2. Cela nous donnera les deux premières lignes de chaque groupe.

Voici un exemple de requête implémentant ces lignes étapes :

SELECT *
FROM (
    SELECT *, RANK() OVER (PARTITION BY NAME ORDER BY SCORE DESC) AS row_rank
    FROM test
) AS ranked
WHERE row_rank <= 2
Copier après la connexion

Cette requête produira le résultat souhaité, comme indiqué ci-dessous :

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

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