Maison > base de données > tutoriel mysql > Comment obtenir les N plus élevées par groupe dans SQL?

Comment obtenir les N plus élevées par groupe dans SQL?

Linda Hamilton
Libérer: 2025-01-25 12:07:09
original
904 Les gens l'ont consulté

How to Get the Top N Rows per Group in SQL?

Compétences SQL: obtenez les données de ligne N précédentes par le groupe

Cet article présente comment extraire efficacement les données de ligne N avant N de chaque groupe à partir de la base de données SQL. Nous utiliserons la fonction de fenêtre, telle que row_number (), rank () et dense_rank () pour atteindre cet objectif. Ces fonctions peuvent générer des identifiants uniques dans la partition spécifiée, ce qui convient très bien au regroupement et à la sélection des lignes.

Utilisez row_number ()

row_number () est le numéro de série continu à partir de 1 dans chaque partition.

Dans cet exemple, Row_number () crée une nouvelle liste appelée "RN" pour allouer des numéros de série pour chaque ligne dans chaque groupe

.

<code class="language-sql">SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY rate DESC) AS rn
FROM h
WHERE year BETWEEN 2000 AND 2009</code>
Copier après la connexion
Utiliser Rank () et dense_rank ()

id Les fonctions

rank () et dense_rank () fournissent une autre méthode aux nombres dans la ligne de groupe. Rank () est une valeur non répétée avec la même ligne de tri, et le dense_rank () alloue la valeur continue.

RAND () et dense_rank () ont créé respectivement les colonnes "RK" et "DR", indiquant que chaque ligne et classement dense dans leurs groupes

.

combiné avec des résultats limites ou limites supérieurs
<code class="language-sql">SELECT *, RANK() OVER (PARTITION BY id ORDER BY rate DESC) AS rk,
DENSE_RANK() OVER (PARTITION BY id ORDER BY rate DESC) AS dr
FROM h
WHERE year BETWEEN 2000 AND 2009</code>
Copier après la connexion

id Après avoir alloué l'identifiant unique pour chaque paquet, vous pouvez utiliser la limite ou le modificateur supérieur pour récupérer la ligne spécifiée de chaque groupe.

Dans cet exemple, le modificateur limite récupère les 5 principales lignes de chaque groupe . Vous pouvez ajuster les nombres au besoin.

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