首页 > 数据库 > mysql教程 > 如何在单个 PostgreSQL 查询中使用 SUM() 有效计算百分比?

如何在单个 PostgreSQL 查询中使用 SUM() 有效计算百分比?

Linda Hamilton
发布: 2025-01-01 01:08:09
原创
291 人浏览过

How Can I Efficiently Calculate Percentages Using SUM() in a Single PostgreSQL Query?

在单个 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;
登录后复制

此查询采用以下内容步骤:

  1. 使用 count(value_a = value_b OR NULL) 计算 value_a 等于 value_b 的行数,无论 NULL 值如何。
  2. 将结果除以总行数使用 count(*).
  3. 将结果乘以 100 将比率表示为

处理 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板