Maison >base de données >tutoriel mysql >Comment obtenir les N plus élevées par groupe dans SQL?
Compétences SQL: obtenez les données de ligne N précédentes par le groupeCet 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>Utiliser Rank () et dense_rank () 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.
id
Les fonctionsRAND () 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>
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!