Maison >base de données >tutoriel mysql >Comment calculer le pourcentage de valeurs correspondantes entre deux colonnes dans une seule instruction SQL SELECT ?
Dans le contexte de la table 'my_obj', qui contient deux champs entiers («value_a» et 'value_b'), vous cherchez à déterminer le pourcentage d'instances où 'value_a' est égal à 'value_b'.
Pour des performances et une simplicité optimales, considérez la requête révisée suivante :
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
Ceci Cette approche exploite la capacité de « count() » à ignorer les valeurs « NULL », garantissant ainsi que les deux colonnes sont prises en compte. En multipliant le nombre de valeurs correspondantes par 100 et en divisant par le nombre total, le pourcentage est calculé.
Si des chiffres fractionnaires sont souhaités dans le résultat, utilisez « 100,0 » au lieu de « 100 » dans le calcul et envisagez d'utiliser 'round()' :
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
Cette version révisée garantit que le calcul reste numérique, préservant les valeurs fractionnaires et permettant une plus grande précision dans le pourcentage rapporté.
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!