SQL 找出平均成绩大于80的学生总人数?找出平均成绩最高的学生的所有信息?
表:STUDENT(学号,姓名,年号)8101,张三,18,101;8102,钱四,16,121;8103,王玲,17,131;8105,李飞,19,102;8109,赵...
表:STUDENT(学号,姓名,年号)
8101 ,张三, 18 , 101 ;
8102 ,钱四, 16 , 121 ;
8103 ,王玲, 17 , 131 ;
8105 ,李飞, 19 , 102 ;
8109 ,赵四, 18 , 141 ;
8110 ,李可, 20 , 142 ;
8201 ,张飞, 18 , 111 ;
8302 ,周瑜, 16 , 112 ;
8203 ,王亮, 17 , 111 ;
8305 ,董庆, 19 , 102 ;
8409 ,赵龙, 18 , 101 ;
8510 ,李丽, 20 , 142 ;
表:GRADE(学号,姓名,课程号,成绩)
8101 ,张三, 001 , 80 ;
8101 ,张三, 002 , 88 ;
8102 ,钱四, 001 , 85 ;
8102 ,钱四, 002 , 80 ;
8103 ,王玲, 001 , 89 ;
8103 ,王玲, 003 , 90 ;
8105 ,李飞, 001 , 85 ;
8105 ,李飞, 003 , 70 ;
8109 ,赵四, 002 , 85 ;
8109 ,赵四, 003 , 70 ;
8110 ,李可, 001 , 80 ;
8201 ,张飞, 002 , 90 ;
8302 ,周瑜, 001 , 92 ;
8302 ,周瑜, 003 , 90 ;
8203 ,王亮, 003 , 80 ;
8305 ,董庆, 001 , 70 ;
8305 ,董庆, 002 , 85 ;
8409 ,赵龙, 001 , 80 ;
8409 ,赵龙, 002 , 70 ;
8510 ,李丽, 001 , 80 ;
我只能找出平均成绩大于80的学生的姓名和平均成绩,不知道这总人数该怎么求,查资料觉得应该要用嵌套语句,可还没学过,以下是我编的第一个题目的程序,但出来答案不对,哪位高手帮忙解决下?
SELECT count(number)
FROM dbo.[GRADE]
WHERE EXISTS
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
)
第一张表打错了,年号改为班号
学号:number 名字:name 班号:clnumber 课程号:conumber 成绩:grade
前面两楼的我试了,不行哦~
第一题三楼的我试过行,但第二题好像都不行哦,是最高平均值,gav()上再加max(),不知道该怎么编 展开
8101 ,张三, 18 , 101 ;
8102 ,钱四, 16 , 121 ;
8103 ,王玲, 17 , 131 ;
8105 ,李飞, 19 , 102 ;
8109 ,赵四, 18 , 141 ;
8110 ,李可, 20 , 142 ;
8201 ,张飞, 18 , 111 ;
8302 ,周瑜, 16 , 112 ;
8203 ,王亮, 17 , 111 ;
8305 ,董庆, 19 , 102 ;
8409 ,赵龙, 18 , 101 ;
8510 ,李丽, 20 , 142 ;
表:GRADE(学号,姓名,课程号,成绩)
8101 ,张三, 001 , 80 ;
8101 ,张三, 002 , 88 ;
8102 ,钱四, 001 , 85 ;
8102 ,钱四, 002 , 80 ;
8103 ,王玲, 001 , 89 ;
8103 ,王玲, 003 , 90 ;
8105 ,李飞, 001 , 85 ;
8105 ,李飞, 003 , 70 ;
8109 ,赵四, 002 , 85 ;
8109 ,赵四, 003 , 70 ;
8110 ,李可, 001 , 80 ;
8201 ,张飞, 002 , 90 ;
8302 ,周瑜, 001 , 92 ;
8302 ,周瑜, 003 , 90 ;
8203 ,王亮, 003 , 80 ;
8305 ,董庆, 001 , 70 ;
8305 ,董庆, 002 , 85 ;
8409 ,赵龙, 001 , 80 ;
8409 ,赵龙, 002 , 70 ;
8510 ,李丽, 001 , 80 ;
我只能找出平均成绩大于80的学生的姓名和平均成绩,不知道这总人数该怎么求,查资料觉得应该要用嵌套语句,可还没学过,以下是我编的第一个题目的程序,但出来答案不对,哪位高手帮忙解决下?
SELECT count(number)
FROM dbo.[GRADE]
WHERE EXISTS
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
)
第一张表打错了,年号改为班号
学号:number 名字:name 班号:clnumber 课程号:conumber 成绩:grade
前面两楼的我试了,不行哦~
第一题三楼的我试过行,但第二题好像都不行哦,是最高平均值,gav()上再加max(),不知道该怎么编 展开
4个回答
展开全部
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)
哦,第二个没注意,已修改
2.select * from student where 学号 in(select top 1 学号 from (select 学号,avg(成绩) score from grade group by 学号)a order by score desc)
哦,第二个没注意,已修改
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题:
SELECT count(number)
FROM dbo.[GRADE]
WHERE number in
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
)
group by number
第二题:
SELECT 学号,姓名,班号,课程号,成绩
FROM dbo.[GRADE],dbo.[STUDENT]
WHERE GRADE.number=STUDENT.number and
number in
(SELECT number, max(grade)
FROM dbo.[grade]
group by number
)
楼主试试吧~呵呵,好久没写过数据库了,也不知道行不行
SELECT count(number)
FROM dbo.[GRADE]
WHERE number in
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
)
group by number
第二题:
SELECT 学号,姓名,班号,课程号,成绩
FROM dbo.[GRADE],dbo.[STUDENT]
WHERE GRADE.number=STUDENT.number and
number in
(SELECT number, max(grade)
FROM dbo.[grade]
group by number
)
楼主试试吧~呵呵,好久没写过数据库了,也不知道行不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT count(number)
FROM dbo.[GRADE]
WHERE number in
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
) group by number
第二个问题:
select p1.number,p1.name,p2.clnumber,p1.conumber,grade from (selct number,name,conumber,grade from grade) p1 left join (select number,clnumber from STUDENT) p2 on p1.number=p2.number where number= (SELECT number,max(grade) FROM GRADE WHERE number in (SELECT number, avg(grade) FROM grade group by number having avg(grade)>80))
新修改的语句,经过测试.....
FROM dbo.[GRADE]
WHERE number in
(SELECT number, avg(grade)
FROM dbo.[grade]
group by number
having avg(grade)>80
) group by number
第二个问题:
select p1.number,p1.name,p2.clnumber,p1.conumber,grade from (selct number,name,conumber,grade from grade) p1 left join (select number,clnumber from STUDENT) p2 on p1.number=p2.number where number= (SELECT number,max(grade) FROM GRADE WHERE number in (SELECT number, avg(grade) FROM grade group by number having avg(grade)>80))
新修改的语句,经过测试.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT count(*)
FROM
(SELECT avg(grade) as column1
FROM dbo.[grade]
group by number
having avg(grade)>80
) as t
FROM
(SELECT avg(grade) as column1
FROM dbo.[grade]
group by number
having avg(grade)>80
) as t
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询