Oracle笔记:建表、更新、查询综合练习

php中文网
发布: 2016-06-07 15:04:04
原创
1487人浏览过

欢迎进入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] 

pollinations
pollinations

属于你的个性化媒体引擎

pollinations 231
查看详情 pollinations

Oracle笔记:建表、更新、查询综合练习

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号