[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)实现排行榜功能

原文地址:https://www.cnblogs.com/htht66/p/2330974.html