当前位置:数据库 > SQLServer >>

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

表名叫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
其他:用课程号分组,及格人数使用子查询,假设及格分数是60分
select sno as 课程号,count(*) as 全部人数,(select count(*) from reports where score>=60 and sno=a.sno) as 及格人数
from reports a
group by sno /*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 

上一个:mysql语句 怎么转mssql unsigned是什么意思KEY是外键吗
下一个:mssql 表中的有些行,不能修改或删除.

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,