视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle笔记:建表、更新、查询综合练习
2020-11-09 08:26:48 责编:小采
文档

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 三、数据操作 1、 求出目前总积分最高的系名,及其积分。 1、确定所要使用的数据表: .sporter表:求出系名称; .grade表:找到积分; 2、确定已知的关联字段:sporter.sporterid=grade.sporterid;

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

三、数据操作

1、 求出目前总积分最高的系名,及其积分。

1、确定所要使用的数据表:

.sporter表:求出系名称;

.grade表:找到积分;

2、确定已知的关联字段:sporter.sporterid=grade.sporterid;

第一步:将sporter表和grade表联合

SELECT s.department,g.mark

FROM sporter s,grade g

WHERE s.sporterid=g.sporterid;第二步:以上是求出每个系针对于项目获得的积分,那么下面将以上的查询分组,按照系名称分组。

SELECT s.department,SUM(g.mark)

FROM sporter s,grade g

WHERE s.sporterid=g.sporterid

GROUP BY s.department;此时已经知道各个系的成绩了,那么对于求出总积分最高的信息,有两种做法:

.做法一:不考虑相同积分的问题,所有的数据由高到低降序排列,取第一个数据。

SELECT * FROM (

SELECT s.department,SUM(g.mark) sum

FROM sporter s,grade g

WHERE s.sporterid=g.sporterid

GROUP BY s.department

ORDER BY sum DESC)

WHERE ROWNUM=1;?做法二:考虑相同积分的问题,则必须首先进行分组函数的嵌套,求出最高的积分是多少,而后再用此内容与之前的分组进行过滤。

SELECT s.department,SUM(g.mark) sum

FROM sporter s,grade g

WHERE s.sporterid=g.sporterid

GROUP BY s.department

HAVING SUM(g.mark)=(

SELECT MAX(SUM(g.mark)) sum

FROM sporter s,grade g

WHERE s.sporterid=g.sporterid

GROUP BY s.department);2、 找出在一操场进行比赛的各项目名称及其冠军的姓名。

1、确定所要使用的数据表:

.sporter表:运动员的姓名;

.item表:项目名称;

.grade表:冠军的信息依靠成绩计算;

2、确定已知的关联字段:

.运动员和成绩:sporter.sporterid=grade.sporterid;

.项目和成绩:item.itemid=grade.itemid;

第一步:确定一操场进行的项目的ID

SELECT itemid FROM item WHERE location=’一操场‘;第二步:求出冠军的成绩,因为各个项目有各个项目的冠军分数

SELECT i.itemid,MAX(g.mark) max

FROM item i,grade g

WHERE i.location=’一操场‘ AND i.itemid=g.itemid

GROUP BY i.itemid;第三步:要根据这个成绩,找到对应的运动员姓名

SELECT s.name,g.itemid,temp.max

FROM sporter s,grade g,(

SELECT i.itemid iid,MAX(g.mark) max

FROM item i,grade g

WHERE i.location=’一操场‘ AND i.itemid=g.itemid

GROUP BY i.itemid) temp

WHERE s.sporterid=g.sporterid AND temp.iid=g.itemid AND g.mark=temp.max;第四步:找到项目名称,引入item表

SELECT s.name,g.itemid,temp.max,i.itemname

FROM sporter s,grade g,(

SELECT i.itemid iid,MAX(g.mark) max

FROM item i,grade g

WHERE i.location=’一操场‘ AND i.itemid=g.itemid

GROUP BY i.itemid) temp,item i

WHERE s.sporterid=g.sporterid AND temp.iid=g.itemid AND g.mark=temp.max

AND g.itemid=i.itemid AND temp.iid=i.itemid;3、 找出参加了张三所参加的所有项目的其他同学的姓名。

[1] [2] [3] [4]

下载本文
显示全文
专题