Recherche de la valeur la plus courante pour une colonne en fonction de la valeur d'une autre colonne dans SQL
Dans un scénario où une table contient plusieurs colonnes, telles que "country", "food_id" et "eaten", une tâche courante consiste à déterminer la valeur la plus fréquente pour une colonne ("food_id") dans chaque valeur unique d'une autre colonne ("pays").
Une approche, comme mentionné dans la question, consiste à créer des tables temporaires et à effectuer plusieurs sous-requêtes pour calculer les décomptes, trouver le décompte maximum et récupérer les valeurs "food_id" correspondantes. Bien que fonctionnelle, cette méthode peut sembler lourde.
Heureusement, PostgreSQL 9.4 a introduit une solution plus simple : la fonction mode(). Cette fonction fournit un moyen efficace de trouver la valeur la plus courante pour une colonne spécifiée au sein de chaque groupe défini par une expression de regroupement.
Pour utiliser la fonction mode() pour cette tâche, la requête SQL suivante peut être utilisée :
SELECT mode() within group (order by food_id) FROM munch GROUP BY country
Cette requête exploite la fonction mode() pour calculer la valeur « food_id » la plus courante pour chaque valeur « country » unique. La clause Within Group (ORDER BY food_id) garantit que la fonction mode() opère sur la colonne "food_id" au sein de chaque groupe de pays, en classant les valeurs par ordre croissant avant d'identifier le mode.
Le résultat de cette requête , comme également démontré dans la réponse fournie, sera un tableau affichant le "pays" et sa valeur "food_id" la plus courante correspondante :
country | mode -------------- GB | 3 US | 1
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!