Maison >base de données >tutoriel mysql >Comment calculer le pourcentage de valeurs correspondantes dans une requête SQL SELECT ?
Calculer les pourcentages de SUM() dans la même requête SELECT
Dans la table my_obj, où les champs entiers value_a et value_b sont présents, le but est de déterminer le pourcentage de fois où value_a est égal à value_b.
Tentative incorrecte :
select sum(case when o.value_a = o.value_b then 1 else 0 end) as nb_ok, sum(case when o.value_a != o.value_b then 1 else 0 end) as nb_not_ok, compute_percent(nb_ok,nb_not_ok) from my_obj as o group by o.property_name;
Cette approche échoue car la colonne nb_ok n'existe pas dans la requête.
Optimisé Solution :
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
Explication :
Résultat :
property_name | pct --------------+---- prop_1 | 17 prop_2 | 43
Alternative pour fractionnaire Chiffres :
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
Cette variante introduit un chiffre fractionnaire pour préserver les décimales.
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!