Recherche des N valeurs les plus élevées dans les tables MySQL
Dans l'analyse des données et le reporting, il est souvent nécessaire de récupérer les principaux enregistrements en fonction des valeurs les plus élevées d’une colonne spécifique. Cependant, une ambiguïté peut survenir lorsque plusieurs enregistrements partagent la même valeur maximale à proximité de la Nième position.
Question :
Lors de l'utilisation de SQL pour sélectionner les N premières lignes avec la valeur la plus élevée valeurs pour une colonne particulière, la requête doit-elle renvoyer uniquement les N premières lignes ou inclure des lignes supplémentaires avec la même valeur maximale ?
Réponse :
La réponse dépend si vous souhaitez inclure ou exclure les valeurs principales en double. Voici deux approches :
Approche 1 : exclure les principales valeurs en double
Pour récupérer uniquement les N premières lignes sans doublons, utilisez la requête suivante :
SELECT * FROM t ORDER BY value DESC LIMIT N
Dans cette requête, la clause LIMIT N limite l'ensemble de résultats aux N premières lignes, en excluant toutes les lignes ayant la même valeur maximale en dessous de la Nième ligne.
Approche 2 : Inclure le haut en double Valeurs
Pour récupérer toutes les lignes avec la valeur la plus élevée, quels que soient les doublons, utilisez la requête suivante :
SELECT * FROM t JOIN (SELECT min(value) AS cutoff FROM (SELECT value FROM t ORDER BY value LIMIT N ) tlim ) tlim ON t.value >= tlim.cutoff;
Cette requête utilise une sous-requête pour déterminer la valeur seuil pour les lignes avec la Nième valeur la plus élevée. Il joint ensuite cette sous-requête à la table principale à l'aide d'une clause ON pour filtrer les lignes dont les valeurs sont supérieures ou égales au seuil.
Considérations supplémentaires :
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!