表MyTable
的定义如下:
Student_id(int), course_id(int), pass(bool)
如何通过student_ids
获得pass_rate > 95%
?
还有course_ids
和pass_rate > 95%
吗?
谢谢
答案 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