sql - Oracle SQL 计算百分比
问题描述
我正在尝试根据每个科目的学生总数和年级分布来计算百分比。
我有以下字段的表:
- 学生卡
- 学期,
- 课程
- 最终成绩
我写了下面的查询来获得每门课程和每个年级的总数
select distinct Count( StudentID ) as "Total",
COURSE,FINAL_GRADE,subject,from table
where term in('2000200')
and subject in ('ENG111','ENG112,'ENG121',,,,,,,,,,,,etc)
and FINAL_GRADE IN('A','B','C','F')
group by 1
我不能使用下面的代码,因为它将计算总总数而不是每个主题:
count(ID) * 100.0 / (select count(*) from Table) as 'Percentage'
输出应该类似于下面
请帮忙
谢谢你
解决方案
为此,您可以使用非常好的 Oracle 分析函数“RATIO_TO_REPORT”,如下所示。
SELECT subject, grade, COUNT(*) total,
100 * RATIO_TO_REPORT(COUNT(*))over(PARTITION BY subject) Percentage
FROM T
GROUP BY subject, grade
ORDER BY subject, grade
;
推荐阅读
- flutter - 无法在字段初始化程序中访问此内容以读取“属性”
- c - 如何从库/二进制文件中提取函数名称
- rsocket - 无法使用 rsocket-tcp-client 包
- python - 元素不可交互的 Selenium Python
- javascript - Javascript 发送一个带有文本值的 id
- laravel - 如何在 Laravel 资源中检索具有多对多关系的数据
- python - 将单列 pyodbc 行转换为纯整数值
- r - R中的“localgauss”包 - 绘图问题
- typo3 - TYPO3 TCA 填写创建年份和 UID 的字段
- phpexcel - PHPExcel - 单元格格式