❶ sql 查询某门课程及格的总人数以及不及格的总人数以及没成绩的人数
两种方法
select
case
when
score>60
then
'及格'
else
'不及格'
end
as
'类别',count
(*)
as
'人数'
from
db_score
group
by
case
when
score>60
then
'及格'
else
'不及格'
end
-------------------------------------
select
'不及格'
as
'类别'
,count(*)as
'人数'
from
db_score
where
score<60
union
all
select
'及格'
as
'类别'
,count(*)
as
'人数'
from
db_score
where
score>=60
❷ 怎么用SQL语句查询所有学生所学课程(单个学生学的多门课程)的最高分数,最低分数和平均分数
SELECT student.sno AS `学号`,student.sname AS `姓名`,MAX(grade) AS `最高分`,MIN(grade) AS `最低分`,AVG(grade) AS `平均分`
FROM sc JOIN student ON sc.sno = student.sno GROUP BY sc.sno ;
❸ SQL:查询出姓王且所有功课都及格的学生信息(子查询)
select *
from 学生表
where 姓名 like '王%'
and 学号 not in (select 学号 from 选课表 where 成绩 <60)
❹ sql数据库查询 1、查询学号尾数为4,5的信息 2、检索所选课程都及格的学生信息 求助啊!!!!!
1.select * from 表名 where 学号 like '%[4,5]'
2.select * from 表名 group by 学生号 having 成绩>avg(成绩)
1.select * from XSQK,KC,XS_KC where XSQK.学号=XS_KC.学号 and XSQK.课程号=XS_KC.课程号 and XSQK.学号 like '%[4,5]'------------------*的部分是查询所有列,你可以针对的填上你想要的列
2.select * from XSQK,KC,XS_KC -----------这是要从3个表中查询
where XSQK.学号=XS_KC.学号 and XSQK.课程号=XS_KC.课程号 -------这是3个表关联到一起
and XS_KC.学号 in---------我限定的条件 学号在in里面
(select XS_KC.学号 from XS_KC group by XS_KC.学号 having min(成绩)>60)
------------嵌套的查询是 通过学号分组 每个人有多个成绩,最小的成绩大于60 说明他所有成绩都大于60 ,返回的是学号,
-----------------最终结果是 返回所有成绩都大于60的所有同学的全部信息
如果不明白 追问
❺ sql练习:查询所有课程成绩小于60 分的同学的学号、姓名;
(2)这么写坑定不对,这么写得出的答案是“上过那个老师的课程的学生”而不是“上过那个老师所有课程的学生”,而且那个答案效率太低,还不如这个:
select sno,sname from student
where sno in(select sno from sc
where cno in (select cno from course
where tno in (select tno from teacher where tname='谌燕')));
❻ SQL求选修课程在两门以上并且都及格的学生号及总平均分
我只会oracle的写法,其他数据库可能会有所区别,请注意。而且就算这种写法,因为无法实验可能也有些出入,应该需要调试
select 学生号,avg(分数) from table where 分数>=60 group by 学生号 having count(*)>1
分数>60保证及格,这里首先查询的是及格的学生,及格的学生如果count(*)>1,那么他的选课一定是两门或者两门以上(我假定的选课表是一个学生一个课程一行)。不过这里有一个问题,假设一个学生选了三门课程,两门及格一门不及格,那么是不是需要统计,按照你的需求
“两门以上并且都及格”,现在这个语句好像与你的要求不是那么符合。
所以还有一个版本
select table.学生号,avg(table.分数) 平均分 from table,(select 学生号,count(*) 选课数 from table group by 学生号 having 选课数>1)a where table.分数>60 group by 学生号 having table.学生号=a.学生号 and a.选课数=count(*)
❼ sql 查询出所有科目都及格了的同学的名字
换个思路,只要把有不及格成绩的排除掉,剩下的肯定都是全部及格的。至于是什么科目,有几门科目,完全不用管
select name from score where name not in(
select name from score where score < 60
)
❽ sql语句查询有5门课程不及格的学生学号姓名
select student_no,student_name from student
where score<60
group by student_no,student_name
having count(*)=5
❾ SQL语句求助,查询出每门课程及格和不及格的人数
---以下在SQL2005执行通过--
---结果将以 科目、及格数、不及格数 显示
select * from
(select col2,count(*) as [及格数]
from tb
where col1>=60
group by col2
)t
outer apply
(select count(*) as [不及格数]
from tb
where col1<60 and t.col2= col2
group by col2
)m
-----这应该是楼主想要的了吧。
❿ SQL命令如何“列出所有课程都及格了的同学的名字”
换个思路,只要把有不及格成绩的排除掉,剩下的肯定都是全部及格的。至于是什么科目,有几门科目,完全不用管
select
name
from
score
where
name
not
in(
select
name
from
score
where
score
<
60
)