首页 > 数据库 > mysql教程 > 如何计算 SQL SELECT 查询中匹配值的百分比?

如何计算 SQL SELECT 查询中匹配值的百分比?

Mary-Kate Olsen
发布: 2024-12-27 03:49:09
原创
788 人浏览过

How to Calculate the Percentage of Matching Values in a SQL SELECT Query?

在同一个 SELECT 查询中通过 SUM() 计算百分比

在 my_obj 表中,其中存在整数字段 value_a 和 value_b,目标是确定 value_a 等于的次数百分比value_b。

不正确的尝试:

select sum(case when o.value_a = o.value_b then 1 else 0 end) as nb_ok,
       sum(case when o.value_a != o.value_b then 1 else 0 end) as nb_not_ok,
       compute_percent(nb_ok,nb_not_ok)
from  my_obj as o
group by o.property_name;
登录后复制

此方法失败,因为查询中不存在 nb_ok 列。

已优化解决方案:

SELECT property_name
      ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct
FROM   my_obj
GROUP  BY 1;
登录后复制

解释:

  • = 优先于 OR 确保首先对比较进行计算。
  • count(value_a = value_b OR NULL) 确保 NULL 值忽略。
  • (count(value_a = value_b OR NULL) * 100) 除以 count(*) 计算百分比。
  • count(*) 表示总行数,包括无效的值。

结果:

property_name | pct
--------------+----
 prop_1       | 17
 prop_2       | 43
登录后复制

小数数字的替代方案:

SELECT property_name
      ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct
FROM   my_obj
GROUP  BY 1;
登录后复制

此变体引入小数位以保留小数位。

以上是如何计算 SQL SELECT 查询中匹配值的百分比?的详细内容。更多信息请关注PHP中文网其他相关文章!

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