在 SQL 中的同一 SELECT 语句中通过 SUM() 计算百分比
在具有整数字段 value_a 和 value_b 的表 my_obj 的上下文中,可以计算 value_a 等于 value_b 的行的百分比。初始查询尝试使用存储过程来实现此目的,但遇到了错误。
简化且更高效的解决方案
更简单、更快的方法如下:
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
此查询:
处理 NULL 值
此解决方案可以正确处理 NULL 值,这与原始查询不同,原始查询可能会导致不正确的结果或被零除错误.
保留小数数字
要在结果中保留小数位,请按如下方式修改查询:
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
此更改将分子乘以 100.0 以强制数字精度,然后使用 round()指定小数位数
结论
通过使用简化查询或保留小数的修改查询,可以在同一 SELECT 语句中有效地从 SUM() 计算百分比,处理适当的 NULL 值。
以上是如何在单个 SQL SELECT 语句中通过 COUNT() 有效计算百分比?的详细内容。更多信息请关注PHP中文网其他相关文章!