select 学生 from 成绩表 group by 学生 having sum(case when 分数 >=60 then 1 else 0 end) > count(*) / 2
感谢@卖水果的net,看到having用法犹如醍醐灌顶,受教了,最终语句如下 SELECT count(*) FROM ( SELECT student_name FROM SUBJECT GROUP BY student_name HAVING sum( CASE WHEN subject_status = 1 THEN 1 ELSE 0 END ) > count(*) * 0.75 ) t
from 成绩表
group by 学生
having sum(case when 分数 >=60 then 1 else 0 end) > count(*) / 2
SELECT count(*) FROM ( SELECT student_name FROM SUBJECT GROUP BY student_name HAVING sum( CASE WHEN subject_status = 1 THEN 1 ELSE 0 END ) > count(*) * 0.75 ) t