mysql根据数据表某字段的范围条件进行统计
我有一张表(学生选课表)有以下字段:id(key),nameid ,courid,score,每个学生可以选择多门课,而没门科也可由多个学生选,现在我想根据学生的成绩,统计出每个学生有几门课通过(score>=60),几门课没通过(score<60),请问怎么写sql语句;或怎么实现这种查询 问题点数:60、回复次数:4Top
1 楼sinp(大沙锥)回复于 2005-01-18 11:14:33 得分 20
一条语句可能不成吧。
我觉得,你这个数据库应该是,一个条记录包含的是一个学生,选修的一门课程,以及成绩。
select count(*) from XXX where score >=60 group by nameid;
select count(*) from XXX where score <60 group by nameid;
要用两个来查询的吧。
或者select count(*) from XXX group by nameid;
得到一个数字,也就是这个学生选修了多少门。
select count(*) from XXX where score >=60 group by nameid;
得到另一个数字,然后相减。Top
2 楼mathematician(数学家)回复于 2005-01-18 12:50:28 得分 0
通过:
SELECT nameid,
(SELECT COUNT(*) FROM suu as a WHERE a.nameid=b.nameid AND a.score>=60) as PASS
FROM suu as b GROUP by nameid;
没通过:
SELECT nameid,
(SELECT COUNT(*) FROM suu as a WHERE a.nameid=b.nameid AND a.score<60) as PASS
FROM suu as b GROUP by nameid;Top
3 楼wakenwu()回复于 2005-01-18 14:17:40 得分 0
我用的是mysql,不知道怎么能把这两条语句写在一起,两个结果同时作为输出,因为我要输出好多条这样的记录(数据集输出)Top
4 楼mathematician(数学家)回复于 2005-01-19 10:37:43 得分 40
SELECT nameid,
(SELECT COUNT(*) FROM suu as a WHERE a.nameid=b.nameid AND a.score>=60) as PASS,
(SELECT COUNT(*) FROM suu as a WHERE a.nameid=b.nameid AND a.score<60) as FAIL
FROM suu as b GROUP by nameid;Top




