转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
Oracle 9i 分析函数参考手册         ★★★★

Oracle 9i 分析函数参考手册

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5540 更新时间:2009/4/22 22:03:05
* 6000 = 5760

SELECT last_name, salary, department_id,
       PERCENTILE_CONT(0.7) WITHIN GROUP (ORDER BY salary)
       OVER (PARTITION BY department_id) "Percentile_Cont",
       PERCENT_RANK()
       OVER (PARTITION BY department_id ORDER BY salary) "Percent_Rank"
  FROM employees WHERE department_id IN (30, 60);

LAST_NAME                     SALARY DEPARTMENT_ID Percentile_Cont Percent_Rank
------------------------- ---------- ------------- --------------- ------------
Colmenares                      2500            30            3000            0
Himuro                          2600            30            3000          0.2
Tobias                          2800            30            3000          0.4
Baida                           2900            30            3000          0.6
Khoo                            3100            30            3000          0.8
Raphaely                       11000            30            3000            1
Lorentz                         4200            60            5760            0
Austin                          4800            60            5760         0.25
Pataballa                       4800            60            5760         0.25
Ernst                           6000            60            5760         0.75
Hunold                          9000            60            5760            1


PERCENTILE_DISC
功能描述:返回一个与输入的分布百分比值相对应的数据值,分布百分比的计算方法见函数CUME_DIST,如果没有正好对应的数据值,就取大于该分布值的下一个值。
注意:本函数与PERCENTILE_CONT的区别在找不到对应的分布值时返回的替代值的计算方法不同

SAMPLE:下例中0.7的分布值在部门30中没有对应的Cume_Dist值,所以就取下一个分布值0.83333333所对应的SALARY来替代

SELECT last_name, salary, department_id,
       PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY salary )
       OVER (PARTITION BY department_id) "Percentile_Disc",
       CUME_DIST() OVER (PARTITION BY department_id ORDER BY salary)      "Cume_Dist"
  FROM employees
WHERE department_id in (30, 60);

LAST_NAME                     SALARY DEPARTMENT_ID Percentile_Disc  Cume_Dist
------------------------- ---------- ------------- --------------- ----------
Colmenares                      2500            30            3100 .166666667
Himuro                          2600            30            3100 .333333333
Tobias                          2800            30            3100         .5
Baida                           2900            30            3100 .666666667
Khoo                            3100            30            3100 .833333333
Raphaely                       11000            30            3100          1
Lorentz                         4200            60            6000         .2
Austin                          4800            60            6000         .6
Pataballa                       4800            60            6000         .6
Ernst                           6000            60            6000         .8
Hunold                          9000            60            6000          1


RANK
功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。
SAMPLE:下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与DENSE_RANK函数的区别)

SELECT d.department_id , e.last_name, e.salary, RANK()
        OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank
  FROM employees e, departments d
WHERE e.department_id = d.department_id
   AND d.department_id IN (''''60'''', ''''90'''');

DEPARTMENT_ID LAST_NAME                     SALARY      DRANK
------------- ------------------------- ---------- ----------
           60 Lorentz                         4200          1
           60 Austin                          4800          2
           60 Pataballa                       4800          2
           60 Ernst                           6000          4
           60 Hunold                          9000          5
           90 Kochhar                        17000          1
           90 De Haan            &

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9]  下一页


[系统软件]EXP-00008: ORACLE error 904 encountered的解决方…  [常用软件]PB7 连接 Oracle 的配置方法
[Web开发]oracle Export and Import 简介  [Web开发]ADO访问Oracle结果集的心得
[JAVA开发]JDBC+Hibernate将Blob数据写入Oracle  [JAVA开发]J2EE应用中与Oracle数据库的连接
[JAVA开发]Oracle Application Serve_  [其他]HP-UXrx2600B.11.22Uia64安装oracle9i9.2foria64手…
[其他]在RedhatEnterpriseserver3上安装oracle9iR2的注意…  [其他]PROC++批量导入导出ORACLE数据库表
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台