oracle分析函数浅析

DENSE_RANK(),RANK()区别
说明:DENSE_RANK(),RANK()是oracle自带的分析函数,经常被用于在分组后的组内对某一字段的建立序列的方法,它们的区别在于相同字段值的处理不同

范例:

select deptno,cname,sal,
 dense_rank()
  over (partition by deptno
   order by sal desc) dr,
 rank()
  over (partition by deptno
   order by sal desc) r
 from emp
 order by deptno,sal desc
/

结果:

    DEPTNO ENAME             SAL         DR          R
---------- ---------- ---------- ---------- ----------
        10 KING             5000          1          1
        10 CLARK            2450          2          2
        10 MILLER           1300          3          3
        20 SCOTT            3000          1          1
        20 FORD             3000          1          1
        20 JONES            2975          2          3
        20 ADAMS            1100          3          4
        30 BLAKE            2850          1          1
        30 TURNER           1500          2          2
        30 WARD             1250          3          3
        30 MARTIN           1250          3          3
        30 JAMES             950          4          5
        30 ALLEN             600          5          6


分析函数中WINDOWS子句

RANGE
分析的字段必须是日期或数字型,根据当前分析行值进行比较、运算
ROWS
字段可以是任意类型,是行的物理数

WINDOWS子句中的sepcific 字句

UNBOUNDED PRECEDING
排序后从当前分区的第一行开始,结束与正在处理的当前行
CURRENT ROW
从当前行开始(并结束)
NUMERIC EXPRESSION PRECEDING
排序后从当前行之前的数字表达式开始
NUMERIC EXPRESSION FOLLOWING
排序后从当前行直到当前行之后的数字表达式结束
BETWEEN NUMERIC EXPRESSION1 AND NUMERIC EXPRESSION2 FOLLOWING
在以当前行为基准,两个数字的范围内

阅读更多
文章标签: oracle windows
个人分类: 数据库相关
上一篇有人这样说...
下一篇oracle中group关键字详解
想对作者说点什么? 我来说一句

Oracle 11g 第一季 Oracle基础

-

学院

1970年01月01日 08:00

没有更多推荐了,返回首页

不良信息举报

oracle分析函数浅析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭