Extraction des 10 principaux enregistrements par catégorie dans SQL Server 2005
Ce guide montre comment récupérer efficacement les 10 principaux enregistrements pour chaque catégorie (entreprise, local, fonctionnalité) à partir d'une table SQL Server 2005, classés par date d'entrée et filtrés par une plage de dates.
Approche SQL :
Cette solution exploite une sous-requête et une fonction de fenêtre. La sous-requête partitionne les données par catégorie (colonne Section
) et classe les enregistrements dans chaque partition en fonction d'un RankCriteria
décroissant (par exemple, date). La requête principale sélectionne alors uniquement les enregistrements dont le rang est inférieur ou égal à 10.
<code class="language-sql">SELECT rs.Field1, rs.Field2 FROM ( SELECT Field1, Field2, RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank FROM table ) rs WHERE Rank <= 10;</code>
Remarques importantes :
RankCriteria
au sein d'une catégorie, la fonction RANK()
peut renvoyer plus de 10 enregistrements pour cette catégorie.RankCriteria
a des valeurs uniques dans chaque catégorie. Pensez à utiliser ROW_NUMBER()
au lieu de RANK()
si un ordre strict est nécessaire, même avec des égalités. ROW_NUMBER()
attribue un rang unique à chaque ligne, quelles que soient les égalités.Cette requête optimisée fournit une solution robuste pour récupérer les N premiers enregistrements par catégorie dans SQL Server 2005. N'oubliez pas de remplacer table
, Field1
, Field2
et RankCriteria
par vos noms de table et de colonne réels. L'ajout d'une clause WHERE
à la requête interne vous permettra de filtrer par plage de dates selon vos besoins.
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!