扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
肯定是不对的
创新互联建站于2013年开始,先为五大连池等服务建站,五大连池等地企业,进行企业商务咨询服务。为五大连池企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
这是要针对同一个sno,它的最高分小于90,最低分小于70,其实只用score表就行
select a.sno
from
(select sno,min(Degree) Degree from score group by sno) a,
(select sno,max(Degree) Degree from score group by sno) b
where a.Degree 70 and b.Degree 90
具体代码如下:
select 班级名称,分数=MAX(成绩)
from
学生表 s join 班级表 c
on s.班级号=c.班级号
join 成绩表 sc
on s.学号=sc.学号
group by 班级名称
扩展资料:
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
不同的 SQL JOIN,您可以使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行
参考资料:
Oracle官方API接口-PL/SQL API
W3cSchool-SQL JOIN
请参考下列SQL语句:
select student.sno,student.sname,student.sdept,
course.cname,t.maxgrade from
student,course,
(select s.sno,c.sdept,s.cno,c.maxgrade
from sc s,student st,
(select a.sdept,b.cno,max(b.grade) as maxgrade
from student a,sc b where a.sno=b.sno
group by a.sdept,b.cno) c
where s.sno=st.sno and st.sdept=c.sdept and
s.grade=c.maxgrade) t where student.sno=t.sno
and course.cno=t.cno order by course.cname,student.sdept;
上述语句已经测试通过。代码思路是:
学生表与成绩表基于学号进行连接获取每个学号所在系名,然后用院系和课程号对成绩表分组汇总,求得每个院系、每个课程的最高得分(结果集c,含系名、课程号和最高分)。然后用结果集C再次与成绩表、学生表进行比对,筛选出获得每个系、每个课程的最高分的学号并包含课程号和系名(结果集t)。最后t通过连接获取学生表中的学生姓名、课程表中的课程名完成最后输出。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流