SQL查询百分比

时间:2019-02-15 20:18:51

标签: sql

MyTable的定义如下:

Student_id(int), course_id(int), pass(bool)

如何通过student_ids获得pass_rate > 95%? 还有course_idspass_rate > 95%吗?

谢谢

3 个答案:

答案 0 :(得分:1)

按组划分并具有101类

SELECT student_id, SUM(CAST(pass AS INT)) * 100 / COUNT(course_id) as pass_rate
FROM MyTable
GROUP BY student_id
HAVING(sum(cast(pass as int)) * 100 / count(course_id)) > 95

答案 1 :(得分:0)

在两种情况下,您都需要有条件的avg

select sudent_id, avg(case when pass = 1 then 1 else 0 end) average
from mytable
group by sudent_id
having avg(case when pass = 1 then 1 else 0 end) > 0.95;

select course_id, avg(case when pass = 1 then 1 else 0 end) average
from mytable
group by course_id
having avg(case when pass = 1 then 1 else 0 end) > 0.95;

如果您的dbms支持,则可以用pass = 1更改条件pass = true

答案 2 :(得分:-2)

实际上,要这样做,假设您有一栏显示学生的分数,您可以这样做;

SELECT * FROM records WHERE scores > 95