zoh*_*han 1 sql database group-by teradata
我有一个名为Grades的表,其中包含每年的结果。
我想选择每年得分超过70%的学生所占的百分比。
像2012年一样,每100个国家中就有40个获得了70%以上的收入。因此,2012年的百分比为40%。
我在子查询中做到了,但我想知道是否可以不使用子查询。
我正在使用Teradata版本6,该版本支持所有基本sql查询。
我的表架构是。
Table name: Grades<br>
Columns: Name, Marks, Year.
Run Code Online (Sandbox Code Playgroud)
我能做的最好的事情是:
select (count(marks)/count(*))*100.0
from Grades
where marks > 70
Group by year;
Run Code Online (Sandbox Code Playgroud)
您可以使用条件聚合来获取标记> 70的行数。然后将其除以表中的总行数。
select 100.0 * sum(case when marks > 70 then 1 else 0 end)/count(*)
from Grades
Run Code Online (Sandbox Code Playgroud)
如果需要每年的百分比,则应group by在“年份”列中。
select year, 100.0 * sum(case when marks > 70 then 1 else 0 end)/count(*)
from Grades
group by year
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |