Maison > base de données > tutoriel mysql > Comment récupérer les 10 principaux enregistrements pour chaque catégorie dans SQL Server 2005 ?

Comment récupérer les 10 principaux enregistrements pour chaque catégorie dans SQL Server 2005 ?

Barbara Streisand
Libérer: 2025-01-21 05:52:13
original
230 Les gens l'ont consulté

How to Retrieve the Top 10 Records for Each Category in SQL Server 2005?

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>
Copier après la connexion

Remarques importantes :

  • Critères de classement en double : Si plusieurs enregistrements partagent la même valeur RankCriteria au sein d'une catégorie, la fonction RANK() peut renvoyer plus de 10 enregistrements pour cette catégorie.
  • Top 10 garanti : Pour garantir exactement 10 enregistrements par catégorie, assurez-vous que votre colonne 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!

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