[Oracle整理]partition
说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。
作用:
通过partition对相关数据进行一些分析
语法:
分析功能() over( partition by子句,order by子句,窗口子句)
1. Row_Number 和 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
应用场景
(1)实现排行榜功能
人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。