MSSQL数据库中同时查询全部人数、及格人数

来源:百度知道 编辑:UC知道 时间:2024/07/07 02:57:54
表名叫reports
有列名cno,sno,score,分别表示课程号,学号,分数
怎么做?
别给我链接和拷贝,给思路或者给代码都可以,先谢谢了。
我想让他们显示在同一个结果里面

cno相同的在一行里

如果你要查询的是数目的话
(我用的是MySQL)
查询全部人数 :
select count(*) from reports;
及格人数:
//如果score表示的是分数
select count(*) from reports where score>60;

如果你要查询的是所有的记录的话:
查询全部人数:
select * from reports;
查询及格人数:
select *from reports where score>60;

你试试下面的是否可行?
我在MySQL下试过,可行!
select *,' ',if(score>=60,cno,'') as 'cno',if(score>=60,sno,'') as 'sno',if(score>=60,score,'') as 'score' from reports;
两个结果之间以' '分隔,
if用于判断,如果及格则显示相应的数据,否则显示'';
如果你发现if语句不能用的话,就换成相应case语句吧,如第一个if可改为case when score >=60 then cno else '' end

/*SELECT COUNT(*) AS 全部人数,COUNT(SELECT SNO FROM REPORTS
WHERE SCORE>=60))AS 及格人数 FROM REPORTS
GROUP BY SNO*/
--不知道对不对,你试一下.我这儿没有环境.

SELECT COUNT(*) AS 全部人数,
SUM(CASE WHEN SCORE>=60 THEN 1 ELSE 0 END) AS 及格人数
FROM REPORTS

用课程号分组,及格人数使用子查询,假设及格分数是60分