㈠ 用一条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)
结果如下图:
(1)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);
结果与前面正文一样。
㈡ 一个成绩统计表 三个学生 每个学生两门成绩,写一个sql语句获得每门课成绩都大于80分学生的名字
SELECT D.name FROM (
SELECT S.name,S.score AS ITEM1,S1.score AS ITEM2,S2.score AS ITEM3
FROM Student S
inner join Student S1 on S.name = S1.name and S.course <> S1.course
inner join Student S2 on S.name = S2.name and S.course <> S2.course
WHERE S.score>=80 and S1.score>=80 and S2.score>=80
) D
GROUP BY D.name
㈢ sql语句在学生表中查询4号同学成绩高于80分的课程号
原来多表联合查询还可以用列与列之间进行比较。联合百查询后,在where用选度课表的成绩列 大于 选课表平均成绩。
student为学生问表,答class为课程表,selectclass为选课关系表。
select * from selectclass as t1,
(select avg(sc.classreult)as pingjun,sc.classID from selectclass as sc group by classid )as t2
where t1.classID=t2.classID and t1.classReult>t2.pingjun
㈣ SQL 找出平均成绩大于80的学生总人数找出平均成绩最高的学生的所有信息
1.select count(*) from (select 学号,avg(成绩) score from grade group by 学号) a where a.score>80
2.select * from student where 学号 in(select top 1 学号 from (select 学号,avg(成绩) score from grade group by 学号)a order by score desc)
哦,第二个没注意,已修改
㈤ 用sql代码查询课程成绩大于80分的所有学生成绩
Select ID,学生姓名,成绩 from 表名 where 成绩>80
得到的就是成绩大于80分的所有人以及成绩
㈥ SQL查询出平均分大于80分,且至少两门课大于90的学生。
select a.* from stu a,study b,(select a.Sno Sno,count(b.Grade) shuliang from stu a,study b where a.Sno=b.Sno and b.Grade>=90 group by a.Sno)t
where a.Sno=b.Sno and a.Sno=t.Sno and t.shuliang>=2
group by a.Sno,a.Sname,a.Sex,a.Age,a.Native
having avg(b.Grade)>=80
㈦ 用SQL查询出每门成绩都大于80分的学生姓名
代码如下:
select name from stu where name not in(
select name from stu where
fenshu<=80 group by name having
count(*)>=1) group by name
先查到任何一门不足80的学生,再排除这些学生。
㈧ 如何在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经常使用,所以一般将它称为查询(检索)语言并单独出现。