A. sql查询2门以上课程成绩不低于80分的学生的学号、以及不低于85分的课程的门数。
您好:
您这个需求有点复杂,时间缘故没有测试。
如果有异常,请联系我,我回家重新给您看看。
以下是SQL代码
SELECT Student.sno,(SELECT COUNT(*) FROM grade g WHERE g.sno=Student.sno AND grade>=85 )
FROM Student
LEFT JOIN Score ON Score.sno=Student.sno
LEFT JOIN Course ON Course.cno=Score.cno
WHERE grade>=80
GROUP BY Student.sno
HAVING COUNT(*)>2
B. 用sql语言输入,查找成绩在70到80分之间的学生的学习情况
我先假定你有一个数据库,表名叫student_score,成绩是score,学习情况是study(如果不只一个字段你自行添加吧)
select study from student_score where score > 70 and score < 80;
C. 用一条sql语句查询出“每门”课程都大于80分的学生姓名
首先需要进行分析:
要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况。
第一可能所有课程都大于80分。
第二可能有些课程大于80分,另外一些课程少于80分。
第三也可能所有课程都小于80分。
那么我们要查找出所有大于80分的课程的学生姓名,我们可以反向思考,找出课程小于80分(可以找出有一些课程小于80分,所有课程小于80分的学生)的学生姓名再排除这些学生剩余的就是所有课程都大于80分的学生姓名了。
分析完成后,进入数据图形化管理界面创建表并插入数据
--创建表aa
create table aa(
name varchar(10),
kecheng varchar(10),
fengshu int
)
--插入数据到表aa中
insert into aa values('张三','语文',81)
insert into aa values('张三','数学',75)
insert into aa values('李四','语文',76)
insert into aa values('李四','数学',90)
insert into aa values('王五','语文',81)
insert into aa values('王五','数学',100)
insert into aa values('王五','英语',90)
用一条SQL语句查询出每门课都大于80分的学生姓名
select distinct name from aa where name not in (select distinct name from aa where fengshu<=80)
结果如下图:
(3)sql不低于80分的学生扩展阅读:
除了用distinct还可以用not in 或者 not exists 实现
//not in
SELECT DISTINCT A.name FROM Student A WHERE A.name not in(SELECT Distinct S.name FROM Student S WHERE S.score <80);
//not exists
SELECT DISTINCT A.name From Student A where not exists (SELECT 1 From Student S Where S.score <80 AND S.name =A.name);
结果与前面正文一样。
D. sql语句列出成绩在80分到100分之间的学生名单
select * from 学生表 where 学生表主键id in (select 学生表学生id from 成绩表 where 成绩字段 between 80 and 100)
或
select * from 学生表 where 学生表主键id in (select 学生表学生id from 成绩表 where 成绩字段>=80 and 成绩字段<=100)
E. 如何用sql语句查出学生表成绩小于60为不及格60-80为良好80-90为优秀
select name,case when 成绩<60 then 不及格 when 成绩>=60 and 成绩<80 then 良好 when 成绩>=0 and 成绩<90 then 优秀 end as 成绩情况 ,from 表名。
注意,在输入sql语句的时候,要在英文环境下输入。否则可能会出现代码不识别。
F. sql设计存储过程查询成绩单科不低于80分,平均分排班级前十名并且获得过奖学金的学生
select * from 学生基本信息表 a where not exists(select 1 from 学生成绩表 where 学号=a.学号 and 成绩<=80);
select top 10 学号,姓名,avg(成绩) from 学生基本信息表 a ,学生成绩表 b
where exists(select 1 from 奖惩表 where 学号=a.学号)
order by avg(成绩) desc
G. 如何在SQL server中查询成绩大于80的学生记录集
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
语法:
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;
在这里,如果用WHERE代替HAVING就会出错。
数据操纵
数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵。
1、数据检索(常称为查询):寻找所需的具体数据。
2、数据修改:插入、删除和更新数据。
数据操纵语言一般由 INSERT(插入)、 DELETE(删除)、 UPDATE(更新)、 SELECT(检索,又称查询)等组成。由于 SELECT经常使用,所以一般将它称为查询(检索)语言并单独出现。