You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL使用round计算百分比时如何消除小数位输出整数

问题原因

你之前修改round参数的逻辑顺序出错了:
原计算逻辑是 (比例计算 → 保留2位小数) × 100,得到的是 xx.00 格式的结果。如果直接把round的第二个参数改为0,逻辑就变成(比例计算 → 保留0位小数) × 100,例如0.5的比例保留0位小数会直接进位为1,乘以100后自然得到100,这就是所有结果都变成100的原因。

解决方案

调整计算顺序,先把比例乘以100之后再做精度处理即可,以下是两种常用写法:

写法1:调整round的作用位置(支持四舍五入取整)

SELECT ds, 
       round(
         count(CASE WHEN action = 'accepted' THEN 1 ELSE NULL END) * 100.0 / count(action),
         0
       ) as perc
FROM friend_requests
GROUP BY 1

写法2:直接转整数类型(默认截断小数部分,不需要四舍五入时用)

不同数据库的整数类型声明略有差异,通用逻辑参考如下:

SELECT ds, 
       CAST(
         count(CASE WHEN action = 'accepted' THEN 1 ELSE NULL END) * 100.0 / count(action)
         AS UNSIGNED -- PostgreSQL替换为INT,Oracle替换为INTEGER即可
       ) as perc
FROM friend_requests
GROUP BY 1

内容的提问来源于stack exchange,提问作者Chris90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:06:03