SQL百分比计算语法错误求助:ROUND函数使用报错
排查并解决SQL百分比计算的语法错误
错误原因分析
- 语法缺失:原语句中
COUNT()与100之间缺少乘法运算符*,数据库无法解析该表达式,这是触发syntax error的直接原因。 - 写法不规范:
COUNT()虽在部分数据库中可运行,但规范写法应为COUNT(*),明确统计当前分组的所有记录数。 - 计算逻辑隐患:用
100做整数除法会导致精度丢失,需用100.0确保浮点运算。
修正后的SQL语句
SELECT dispute_lost, ROUND((COUNT(*) * 100.0) / SUM(COUNT(*)) OVER (), 2) AS Percentage_lost FROM yellevate_invoices GROUP BY dispute_lost;
关键修正点说明
- 补充
COUNT(*)与100.0之间的乘法运算符*,修复语法错误; - 使用
100.0替代100,保证除法运算为浮点型,避免整数除法导致的结果截断; - 用括号明确运算优先级,确保先完成分组计数乘以100,再除以总记录数;
- 保留
SUM(COUNT(*)) OVER ()窗口函数,正确计算所有分组的总记录数作为百分比分母。
内容的提问来源于stack exchange,提问作者Brelax
相关产品推荐
相关产品推荐

