Maison >base de données >tutoriel mysql >Comment calculer le pourcentage de valeurs correspondantes entre deux colonnes dans une seule instruction SQL SELECT ?

Comment calculer le pourcentage de valeurs correspondantes entre deux colonnes dans une seule instruction SQL SELECT ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 19:58:10303parcourir

How to Calculate the Percentage of Matching Values Between Two Columns in a Single SQL SELECT Statement?

Calcul des pourcentages à partir de SUM() dans une seule instruction SELECT en SQL

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'.

Méthode simple et efficace

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é.

Y compris les chiffres fractionnaires

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn