Rechercher efficacement les valeurs maximales et les données associées dans SQL
Les analystes de données doivent souvent extraire la valeur la plus élevée d'une colonne et les données associées d'autres colonnes d'une table. Pour les grands ensembles de données, l’efficacité est primordiale. Bien que le regroupement par ID et la sélection de la version maximale puissent sembler simples, cette approche omet les balises associées.
Une méthode supérieure et plus efficace utilise la fonction ROW_NUMBER()
. Considérez cette requête :
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) as rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
Cette requête utilise ROW_NUMBER()
pour attribuer un classement à chaque ligne au sein des groupes (partitions) en fonction de la colonne id
. PARTITION BY t.id
garantit un classement indépendant pour chaque identifiant unique. ORDER BY t.version DESC
classe les lignes par ordre décroissant de version, en attribuant le rang 1 à la ligne avec la version maximale pour chaque ID.
La clause WHERE
externe filtre les résultats, ne conservant que les lignes de rang 1. Cela récupère efficacement les identifiants uniques, leurs balises correspondantes et la version maximale pour chaque identifiant. La fonction ROW_NUMBER()
est essentielle pour gérer efficacement de grands ensembles de données.
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!