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

Oracle 9i 分析函数参考手册

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5542 更新时间:2009/4/22 22:03:05
sp;SALARY   DEPT_MAX
------------- ------------------------- ---------- ----------
           10 Whalen                          4400       4400
           20 Hartstein                      13000      13000
           20 Fay                             6000      13000
           30 Raphaely                       11000      11000
           30 Khoo                            3100      11000
           30 Baida                           2900      11000
           30 Tobias                          2800      11000
           30 Himuro                          2600      11000
           30 Colmenares                      2500      11000


MIN
功能描述:在一个组中的数据窗口中查找表达式的最小值。
SAMPLE:下面例子中dept_min返回当前行所在部门的最小薪水值

SELECT department_id, last_name, salary,
   MIN(salary) OVER (PARTITION BY department_id) AS dept_min
   FROM employees WHERE department_id in (10,20,30);

DEPARTMENT_ID LAST_NAME                     SALARY   DEPT_MIN
------------- ------------------------- ---------- ----------
           10 Whalen                          4400       4400
           20 Hartstein                      13000       6000
           20 Fay                             6000       6000
           30 Raphaely                       11000       2500
           30 Khoo                            3100       2500
           30 Baida                           2900       2500
           30 Tobias                          2800       2500
           30 Himuro                          2600       2500
           30 Colmenares                      2500       2500


NTILE
功能描述:将一个组分为"表达式"的散列表示,例如,如果表达式=4,则给组中的每一行分配一个数(从1到4),如果组中有20行,则给前5行分配1,给下5行分配2等等。如果组的基数不能由表达式值平均分开,则对这些行进行分配时,组中就没有任何percentile的行数比其它percentile的行数超过一行,最低的percentile是那些拥有额外行的percentile。例如,若表达式=4,行数=21,则percentile=1的有5行,percentile=2的有5行等等。
SAMPLE:下例中把6行数据分为4份

SELECT last_name, salary,
       NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees
WHERE department_id = 100;

LAST_NAME                     SALARY   QUARTILE
------------------------- ---------- ----------
Greenberg                      12000          1
Faviet                          9000          1
Chen                            8200          2
Urman                           7800          2
Sciarra                         7700          3
Popp                            6900          4


PERCENT_RANK
功能描述:和CUME_DIST(累积分配)函数类似,对于一个组中给定的行来说,在计算那行的序号时,先减1,然后除以n-1(n为组中所有的行数)。该函数总是返回0~1(包括1)之间的数。
SAMPLE:下例中如果Khoo的salary为2900,则pr值为0.6,因为RANK函数对于等值的返回序列值是一样的

SELECT department_id, last_name, salary,
       PERCENT_RANK()
       OVER (PARTITION BY department_id ORDER BY salary) AS pr
  FROM employees
WHERE department_id < 50
  ORDER BY department_id,salary;

DEPARTMENT_ID LAST_NAME                     SALARY         PR
------------- ------------------------- ---------- ----------
           10 Whalen                          4400          0
           20 Fay                             6000          0
           20 Hartstein                      13000          1
           30 Colmenares                      2500          0
           30 Himuro                          2600        0.2
           30 Tobias                          2800        0.4
           30 Baida                           2900        0.6
           30 Khoo                            3100        0.8
           30 Raphaely                       11000          1
           40 Mavris                          6500          0


PERCENTILE_CONT
功能描述:返回一个与输入的分布百分比值相对应的数据值,分布百分比的计算方法见函数PERCENT_RANK,如果没有正好对应的数据值,就通过下面算法来得到值:
        RN = 1+ (P*(N-1)) 其中P是输入的分布百分比值,N是组内的行数
        CRN = CEIL(RN)  FRN = FLOOR(RN)
if (CRN = FRN = RN) then
                (value of expression from row at RN)
        else
                (CRN - RN) * (value of expression for row at FRN) +
                (RN - FRN) * (value of expression for row at CRN)
          注意:本函数与PERCENTILE_DISC的区别在找不到对应的分布值时返回的替代值的计算方法不同

SAMPLE:在下例中,对于部门60的Percentile_Cont值计算如下:
        P=0.7  N=5 RN =1+ (P*(N-1)=1+(0.7*(5-1))=3.8 CRN = CEIL(3.8)=4  
FRN = FLOOR(3.8)=3
          (4 - 3.8)* 4800 + (3.8 - 3)

上一页  [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……
    咸宁网络警察报警平台