Maison > base de données > tutoriel mysql > Comment calculer efficacement les pourcentages de lignes correspondantes dans PostgreSQL ?

Comment calculer efficacement les pourcentages de lignes correspondantes dans PostgreSQL ?

Linda Hamilton
Libérer: 2024-12-27 09:10:12
original
554 Les gens l'ont consulté

How to Efficiently Calculate Percentages of Matching Rows in PostgreSQL?

Calcul du pourcentage à partir de SUM() dans une requête PostgreSQL

Comprendre la requête

Le La requête fournie vise à calculer le pourcentage de lignes où value_a et value_b dans la table my_obj sont égales. Cependant, il rencontre une erreur car la colonne nb_ok, qui est référencée dans la procédure stockée computation_percent, n'existe pas.

Solution optimisée

Pour résoudre ce problème, considérez un plus efficace approche :

SELECT property_name,
       (COUNT(value_a = value_b OR NULL) * 100) / COUNT(*) AS pct
FROM my_obj
GROUP BY property_name;
Copier après la connexion

Explication

Cette requête :

  • Compte le nombre de lignes où value_a = value_b en utilisant COUNT(.. .).
  • Gère les valeurs NULL en utilisant l'expression (value_a = value_b OR NULL).
  • Divise le nombre de lignes correspondantes par le nombre total de lignes en utilisant (COUNT(...) * 100) / COUNT(*).
  • Calcule le pourcentage sans avoir besoin pour une fonction externe.
  • Regroupe les résultats par nom_propriété pour afficher les pourcentages pour chaque propriété groupe.

Inclure les chiffres fractionnaires

Pour conserver les chiffres fractionnaires dans le résultat, utilisez la requête modifiée suivante :

SELECT property_name,
       ROUND((COUNT(value_a = value_b OR NULL) * 100.0) / COUNT(*), 2) AS pct
FROM my_obj
GROUP BY property_name;
Copier après la connexion

Ceci la version utilise ROUND(...) pour arrondir le pourcentage à deux 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal