首页 > 数据库 > mysql教程 > 如何在 SQL 中计算成绩百分比而不预定义所有可能的成绩?

如何在 SQL 中计算成绩百分比而不预定义所有可能的成绩?

DDD
发布: 2025-01-17 04:06:10
原创
171 人浏览过

How Can I Calculate Grade Percentages in SQL Without Predefining All Possible Grades?

在 SQL 语句中计算百分比

问题:

SQL Server 表包含用户姓名和成绩。单个 SQL 语句如何计算所有可能的等级值(例如 A、B、C)的百分比?此外,考虑到用户可能输入开放式响应(例如“通过/失败”或“无”),是否可以在不明确定义所有可能的等级的情况下实现这一目标?

答案:

选项 1:使用over()

select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade
登录后复制

此解决方案是最有效的,并且利用了 over() 函数。

选项 2:通用(任何 SQL 版本)

select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;
登录后复制

此选项适用于任何 SQL 版本,但可能比以前的效率低一。

选项 3:使用 CTE(最低效率)

with t(Grade, GradeCount) 
as 
( 
    select Grade, count(*) 
    from MyTable
    group by Grade
)
select Grade, GradeCount * 100.0/(select sum(GradeCount) from t)
from t;
登录后复制

虽然此方法提供了灵活的解决方案,但效率最低。

以上是如何在 SQL 中计算成绩百分比而不预定义所有可能的成绩?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板