在单个 SQL 查询中通过 SUM() 计算百分比
在 PostgreSQL 中,尝试使用 SUM 计算百分比时可能会遇到错误() 在同一个 SQL 查询中。当您尝试访问尚不存在的列(例如示例中的 nb_ok)时,就会出现问题。
优化解决方案
更高效、更准确的方法计算百分比是使用以下查询:
SELECT property_name, (count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
此查询采用以下内容步骤:
处理 NULL 值
在 count() 表达式中使用 OR NULL 可确保不计算 NULL 值。如果您的表包含 NULL 值,这一点很重要,因为它可以防止不正确的结果或被零除的错误。
强制小数位
在结果,您可以使用 100.0 而不是 100,从而避免进行数值计算截断:
SELECT property_name, round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
避免不区分大小写的标识符
使用 PostgreSQL 时,建议避免使用不带引号的大小写混合标识符,例如 valueA。相反,请使用小写标识符以避免潜在的错误和混乱。
以上是如何在单个 PostgreSQL 查询中使用 SUM() 有效计算百分比?的详细内容。更多信息请关注PHP中文网其他相关文章!