一道关于mysql的面试题,求助

昨天去面试,有道题是:
一个表tb1,字段是name,class,score。分别代表姓名,所在班级,分数。
要求用一条语句查出每个班的及格人数和不及格人数,格式为:class,及格人数,不及格人数。请牛人解答!

非常简单的:

SELECT `class`,
SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END),
SUM(CASE WHEN score>=60 THEN 0 ELSE 1 END)
FROM tb1
GROUP BY 1

主要是考试GROUP BY分组统计,CASE WHEN THEN ELSE END分情形功能,这个是非常典型的应用,几乎所有的数据库都支持上面的语句。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-15
select class,及格人数,不及格人数 from
(select class,count(*) 及格人数 from tb1 where score>=60 group by class) t1 join (select class, count(*) 不及格人数 from tb1 where score<60 group by class) t2 on t1.class=t2.class;
相似回答