[Oracle整理]partition

说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。

 

作用:

通过partition对相关数据进行一些分析

语法:

分析功能() over( partition by子句,order by子句,窗口子句)

1. Row_Number 和 Rank, DENSE_Rank 排序区别

           金额      RowNum      Rank     Dense_Rank
a       4000          1                    1           1
b       3000          2                    2           2
c       2000          3                    3           3
d       2000          4                    3           3
e       1000          5                    5           4


select name,amount,row_number()over(partition by null order by amount) row_number,

Rank()over(partition by null order by amount) rank,

Dense_Rank()over(partition by null order by amount) dense_rank1

from test_partion1

例子:

得到每个部门最高的薪水是多少

select t.*

from (SELECT test_emp.*,

ROW_NUMBER () OVER (PARTITION BY depno ORDER BY salary DESC) ROW_NUMBER FROM test_emp) t

where t.row_number=1

clip_image001[4]

应用场景

(1)实现排行榜功能

posted @ 2012-01-29 11:32  yellowwood  阅读(235)  评论(0编辑  收藏  举报
Never Give UP