SELECT CAST(COUNT(CASE WHEN [Status] = 'YourStatus' THEN 1 END) AS FLOAT) / CAST(COUNT(*) AS FLOAT) * 100 AS Percentage FROM YourTable保存除数是0
时间: 2024-04-05 15:31:00 浏览: 63
这段 SQL 语句中存在一个问题,如果表 YourTable 中没有任何数据,那么 COUNT(*) 的结果将会为 0,这就会导致除数为 0 的错误,无法执行查询。为了避免这种情况,可以在查询中添加一个条件判断,如果表中没有任何数据,则直接返回 0。修改后的 SQL 语句如下:
SELECT
CASE WHEN COUNT(*) = 0 THEN 0 ELSE CAST(COUNT(CASE WHEN [Status] = 'YourStatus' THEN 1 END) AS FLOAT) / CAST(COUNT(*) AS FLOAT) * 100 END AS Percentage
FROM
YourTable
相关问题
你的代码错误string query1 = "SELECT 审核年份, 季度 ROUND(CAST(SUM(CASE WHEN 审核结论 = '通过' THEN 1 ELSE 0 END) AS FLOAT) / COUNT(*) * 100, 2) AS pass_rate FROM FAIsum GROUP BY 审核年份, 季度;";
非常抱歉,我漏掉了在 SELECT 语句中添加逗号的步骤,导致这个查询语句出现了语法错误。请修改您的查询语句,将逗号添加到 SELECT 语句中的两个列之间,例如:
```
SELECT 审核年份, 季度, ROUND(CAST(SUM(CASE WHEN 审核结论 = '通过' THEN 1 ELSE 0 END) AS FLOAT) / COUNT(*) * 100, 2) AS pass_rate FROM FAIsum GROUP BY 审核年份, 季度;
```
这个查询语句应该可以正确地计算每个季度审核结论值是通过的百分比,并以年份为条件进行分组。如果您仍然遇到问题,请告诉我。
我说的是SELECT 审核年份, 季度, ROUND(CAST(SUM(CASE WHEN 审核结论 = '通过' THEN 1 ELSE 0 END) AS FLOAT) / COUNT(*) * 100, 2) AS pass_rate FROM FAIsum GROUP BY 审核年份, 季度;继续报错了
非常抱歉,可能是因为您的SQL查询中使用了中文字段名,导致出现了语法错误。请尝试使用英文字段名,例如:
```
SELECT audit_year, quarter, ROUND(CAST(SUM(CASE WHEN audit_result = '通过' THEN 1 ELSE 0 END) AS FLOAT) / COUNT(*) * 100, 2) AS pass_rate FROM FAIsum GROUP BY audit_year, quarter;
```
如果您的数据表中的字段名是中文的,请将查询中的字段名替换为实际的中文字段名。另外,请确保您的SQL查询中没有其他语法错误或拼写错误。如果您仍然遇到问题,请告诉我查询语句报错的具体信息,我会尽力帮助您解决问题。