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
638 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!

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