Maison > base de données > tutoriel mysql > Comment récupérer les 10 principaux enregistrements de chaque catégorie à l'aide de SQL ?

Comment récupérer les 10 principaux enregistrements de chaque catégorie à l'aide de SQL ?

Susan Sarandon
Libérer: 2025-01-21 05:57:12
original
940 Les gens l'ont consulté

How to Retrieve the Top 10 Records from Each Category Using SQL?

Extraction des 10 meilleurs enregistrements par catégorie avec SQL

Une opération fréquente de base de données consiste à récupérer les principales entrées de chaque catégorie dans une seule requête SQL. Ceci est généralement réalisé à l'aide de fonctions de classement combinées à un partitionnement. Examinons comment procéder à l'aide de SQL, en nous concentrant sur une base de données comportant des catégories telles que « entreprise », « local » et « fonctionnalité ».

Solution SQL Server 2005 pour les 10 principaux enregistrements par section

Dans SQL Server 2005, la requête suivante fournit le résultat souhaité :

<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

Cette requête exploite la fonction RANK() pour classer chaque enregistrement dans sa section respective, en fonction de la colonne RankCriteria. La clause PARTITION BY sépare les enregistrements par Section, garantissant un classement indépendant pour chaque catégorie.

Gérer les égalités dans les classements

Il est crucial de comprendre que RANK() ne gère pas efficacement les égalités. Si plusieurs enregistrements partagent la même valeur RankCriteria, ils reçoivent le même classement. Cela peut conduire à plus de 10 enregistrements renvoyés pour une section s'il existe des égalités.

Pour atténuer cela, envisagez d'utiliser ROW_NUMBER() à la place. ROW_NUMBER() attribue des numéros séquentiels uniques au sein de chaque partition, offrant une sélection plus précise du top 10, bien que cette approche puisse ajouter de la complexité dans certains scénarios.

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