SQL:如何显示通过和失败学生的百分比?
我有一个表格,里面有学生的数据和他们的成绩SQL:如何显示通过和失败学生的百分比?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个表格,里面有学生的数据和他们的成绩 ID Name Result 1 St1 FAIL 2 St2 PASS 3 St3 PASS 4 St4 PASS 5 St5 FAIL 6 St6 PASS 我希望通过和不通过考试的学生的总百分比四舍五入到小数点后2位。我如何才能做到这一点?SQL: SELECT ROUND( SUM( CONVERT( FLOA
ID Name Result
1 St1 FAIL
2 St2 PASS
3 St3 PASS
4 St4 PASS
5 St5 FAIL
6 St6 PASS
我希望通过和不通过考试的学生的总百分比四舍五入到小数点后2位。我如何才能做到这一点?SQL:
SELECT
ROUND(
SUM(
CONVERT(
FLOAT,
CASE WHEN Result = 'PASS' THEN 1
ELSE 0
END
)
)
/COUNT(*) * 100,
2
) AS 'Percent Pass',
ROUND(
SUM(
CONVERT(
FLOAT,
CASE WHEN Result = 'FAIL' THEN 1
ELSE 0
END
)
)
/COUNT(*) * 100,
2
) AS 'Percent Fail'
FROM StudentsResults
结果:
Pass Fail
66.67 33.33
只是另一个没有计数的选项 范例 返回
用GROUPBY子句怎么样
select round(cast(count(Name) as decimal)/cast((select count(*) from StudentPassFail) as decimal)*100,2), result from StudentPassFail
group by result;
我没有得到想要的输出。我得到的两个值都是0。请显示您执行的sql。选择roundcountName/从StudentPassFail*100中选择count*,2,结果从StudentPassFail按结果分组;Sry,忘记了十进制的类型转换。答案中已更正
Pass Fail
66.67 33.33
select round(cast(count(Name) as decimal)/cast((select count(*) from StudentPassFail) as decimal)*100,2), result from StudentPassFail
group by result;