SQL查询有两门以上不及格的学生及查询出全部及格的学生

Posted 程序员自我修养张振力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询有两门以上不及格的学生及查询出全部及格的学生相关的知识,希望对你有一定的参考价值。

1、表结构:

/*学生*/
create table student(
sno int not null primary key,
sname varchar(10)
);
/*课程*/
create table center(
cno int not null primary key,
cname varchar(10)
);
/*分数*/
create table sgrade(
sno int ,
cno int ,
sgrade int
);

2、插入数据:

insert into student values(11,a);
insert into student values(12,b);
insert into student values(13,c)

insert into center values(21,aa);
insert into center values(22,bb);
insert into center values(23,cc)

insert into sgrade values(11,21,54);
insert into sgrade values(12,22,57);
insert into sgrade values(11,21,51);
insert into sgrade values(12,21,36);
insert into sgrade values(11,21,28);
insert into sgrade values(12,22,42);
insert into sgrade values(11,21,59)
insert into sgrade values(11,21,79);
insert into sgrade values(12,22,85);
insert into sgrade values(11,21,90);
insert into sgrade values(12,21,96);
insert into sgrade values(11,21,98);
insert into sgrade values(12,22,94);
insert into sgrade values(11,21,99)

3、查询出有两门以上不及格的学生:

SELECT s.sno,s.sname 
    from student s
    LEFT JOIN sgrade g on s.sno=g.sno
WHERE g.sgrade<60
GROUP BY s.sno HAVING COUNT(s.sno)>2

4、查询出全部及格的学生:

SELECT * FROM student WHERE sno not in (
    SELECT s.sno
        from student s
        LEFT JOIN sgrade g on s.sno=g.sno
    WHERE g.sgrade<60 
)

 

以上是关于SQL查询有两门以上不及格的学生及查询出全部及格的学生的主要内容,如果未能解决你的问题,请参考以下文章

查询有2门及以上不及格科目的学生姓名及其平均成绩

sql 语句编写 查询参加全部科目考试的学生及其成绩 201601 张三 语文 82

用SQL做了一个学生成绩管理的数据库,怎么查询成绩不及格的学生的学号和姓名啊

C语言 有三个学生,各学四门课,计算总平均分数和第n个学生的成绩并查找一门以上课程不及格的学生,输出不及格学生的全部课程成绩

SQL难题:查询所有学科成绩都不及格的和总分排名前三名的

如何查询每个学生已获得的学分(注:成绩及格才能获得相应课程的学分)