我有一张名为Grades的表,其中包含每年的结果
我想选择每年得分超过70%的学生百分比
像例如对于2012年,100个中的40个获得了70%以上。所以2012年的百分比是40%。
我在子查询中做到了,但我想知道是否可以不使用子查询。
我正在使用Teradata Version 6,它支持所有基本的SQL查询
我的表架构是。
Table name: Grades<br>
Columns: Name, Marks, Year.
我能做的最好的事情是:
select (count(marks)/count(*))*100.0
from Grades
where marks > 70
Group by year;
答案 0 :(得分:4)
您可以使用条件聚合来获取标记的行数&gt; 70.然后将其除以表中的总行数。
select 100.0 * sum(case when marks > 70 then 1 else 0 end)/count(*)
from Grades
如果您需要每年的百分比,您应该group by
年份列。
select year, 100.0 * sum(case when marks > 70 then 1 else 0 end)/count(*)
from Grades
group by year
答案 1 :(得分:2)
您可以一步完成平均值。如果您想要一个0到100之间的值:
select year,
avg(case when marks > 70 then 100.0 else 0.0 end) as percentOver79
from Grades
group by year;