首页 >数据库 >mysql教程 >如何高效计算 PostgreSQL 中匹配行的百分比?

如何高效计算 PostgreSQL 中匹配行的百分比?

Linda Hamilton
Linda Hamilton原创
2024-12-27 09:10:12557浏览

How to Efficiently Calculate Percentages of Matching Rows in PostgreSQL?

PostgreSQL 查询中 SUM() 的百分比计算

理解查询

提供的查询旨在计算 value_a 和 value_b 中的行的百分比my_obj 表是相等的。但是,它遇到错误,因为在compute_percent存储过程中引用的nb_ok列不存在。

优化解决方案

要解决此问题,请考虑更有效的方法:

SELECT property_name,
       (COUNT(value_a = value_b OR NULL) * 100) / COUNT(*) AS pct
FROM my_obj
GROUP BY property_name;

说明

此查询:

  • 使用 COUNT(.. .).
  • 使用表达式 (value_a = value_b OR NULL)。
  • 使用 (COUNT(...) * 100) / COUNT(*) 将匹配行数除以总行数。
  • 计算百分比,无需需要外部函数。
  • 按 property_name 对结果进行分组以显示每个属性的百分比

包括小数位

要在结果中保留小数位,请使用以下修改后的查询:

SELECT property_name,
       ROUND((COUNT(value_a = value_b OR NULL) * 100.0) / COUNT(*), 2) AS pct
FROM my_obj
GROUP BY property_name;

This版本使用 ROUND(...) 将百分比四舍五入到小数点后两位。

以上是如何高效计算 PostgreSQL 中匹配行的百分比?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn