rank()、dense_rank()、row_number()、first、last比较
来源:互联网 发布:linux system 和 execl 编辑:程序博客网 时间:2024/06/16 03:15
sal表:
id pro_id amount
1 1 10
2 1 10
3 2 30
4 1 40
5 2 50
id pro_id rownumber
1 1 1
2 1 2
4 1 3
3 2 1
5 2 2
语句二结果:
id pro_id rank
1 1 1
2 1 1
4 1 3
3 2 1
5 2 2
语句三结果:
id pro_id dense_rank
1 1 1
2 1 1
4 1 2
3 2 1
5 2 2
test表:
id mc sl
1 111 1
1 222 1
1 333 2
1 555 3
1 666 3
2 666 1
2 222 1
2 333 2
2 555 2
select
id,mc,sl,
min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id) MINMC
,max(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id) MAXMC
from test;
先以id分组,在分组后的结果内以sl来排序,first取排序后的第一个值(sl)的行,last取排序后的最后一个值(sl)的行(可能有多行,因为一个值可能对应多行),在取出的行中,min(mc)取这些行中mc最小的值,max(mc)取这些行中mc最大的值;
最后结果为:
id mc sl minmc maxmc
1 111 1 111 666
1 222 1 111 666
1 333 2 111 666
1 555 3 111 666
1 666 3 111 666
2 666 1 222 555
2 222 1 222 555
2 333 2 222 555
2 555 2 222 555
id pro_id amount
1 1 10
2 1 10
3 2 30
4 1 40
5 2 50
语句一结果:select id,pro_id,row_number() over (PARTITION by pro_id order by amount) rownumber from sal;--语句一
select id,pro_id,rank() over (PARTITION by pro_id order by amount) rank from sal;--语句二
select id,pro_id,dense_rank() over (PARTITION by pro_id order by amount)dense_rank from sal;--语句三
id pro_id rownumber
1 1 1
2 1 2
4 1 3
3 2 1
5 2 2
语句二结果:
id pro_id rank
1 1 1
2 1 1
4 1 3
3 2 1
5 2 2
语句三结果:
id pro_id dense_rank
1 1 1
2 1 1
4 1 2
3 2 1
5 2 2
test表:
id mc sl
1 111 1
1 222 1
1 333 2
1 555 3
1 666 3
2 666 1
2 222 1
2 333 2
2 555 2
select
id,mc,sl,
min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id) MINMC
,max(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id) MAXMC
from test;
先以id分组,在分组后的结果内以sl来排序,first取排序后的第一个值(sl)的行,last取排序后的最后一个值(sl)的行(可能有多行,因为一个值可能对应多行),在取出的行中,min(mc)取这些行中mc最小的值,max(mc)取这些行中mc最大的值;
最后结果为:
id mc sl minmc maxmc
1 111 1 111 666
1 222 1 111 666
1 333 2 111 666
1 555 3 111 666
1 666 3 111 666
2 666 1 222 555
2 222 1 222 555
2 333 2 222 555
2 555 2 222 555
- rank()、dense_rank()、row_number()、first、last比较
- Oracle:Rank,Dense_Rank,Row_Number比较
- Oracle分析函数总结(2) - 排序 - rank,dense_rank,row_number,first,first_value,last,last_value,lag,lead
- 函数RANK,DENSE_RANK,FIRST,LAST…
- row_number、rank、dense_rank和ntile的比较
- 分析函数ROW_NUMBER,RANK,DENSE_RANK,FIRST,NTILE,RATIO_TO_REPORT等
- ORACLE Rank, Dense_rank, row_number
- Row_Number,Rank,Dense_Rank区别
- rank,dense_rank,row_number
- RANK() ,ROW_NUMBER(),DENSE_RANK( ),ntile( )
- Row_Number,Rank,Dense_Rank区别
- row_number rank dense_rank
- row_number rank dense_rank函数
- row_number rank dense_rank
- ROW_NUMBER,RANK,DENSE_RANK区别
- Row_number & Rank & Dense_Rank
- Hive ROW_NUMBER,RANK(),DENSE_RANK()
- rank,dense_rank,row_number
- ext学习笔记
- Class.forName() 和 ClassLoader.loadClass()的区别?
- log4j配置
- uml建模中的各种图
- sqldeveloper使用
- rank()、dense_rank()、row_number()、first、last比较
- 《Android内核剖析》笔记 第1章 Linux基础
- count(*) over (partition by ……)用法详解
- 线程同步
- JAVA多线程之Semaphore
- 解决[...]Could not find XXXXX.apk问题
- ActivityManager: Warning: Activity not started, its current task has been brought to the front
- 如何设置android模拟器的内存大小
- exception、runtimeException、error