over:在......条件之上
partition by :按照...分组
order by:按照...排序
搭配其他函数使用
rank():跳跃排序,当有两个第一级时下面就是第三级
dense_rank():连续排序,有两个第一级,下面还是第二级
row_number():顺序排序,顺序排序将输出的数据编码,没有重复数值,后面必须搭配over函数使用,并规定order by(字段)才会按照哪个字段排序
举例:
row_number()
select om.OPERATION_DESC1,
om.OPERATION_type,
row_number() over(partition by om.OPERATION_DESC1 order by om.OPERATION_type) opr_rrn
from v_operation_master om
输出结果图
dense_rank()
select om.OPERATION_DESC1,
om.OPERATION_type,
dense_rank() over(partition by om.OPERATION_DESC1 order by om.OPERATION_type) opr_rrn
from v_operation_master om
rank()
select om.OPERATION_DESC1,
om.OPERATION_type,
rank() over(partition by om.OPERATION_DESC1 order by om.OPERATION_type) opr_rrn
from v_operation_master om
注意:当使用rank over()时,空值是最大的,为了避免空值,可以使用,rank over(partition by course order by score desc nulls last)
和sum (),max(),min()函数使用时,语句 max() over(partition by )
不再使用order by 否则返回的值会出错,例如:max(字段1) over(partition by 字段2 order by 字段1 )
想要使用order by 只能设置排序为desc,例如:例如:max(字段1) over(partition by 字段2 order by 字段1 decs )
注意:排序只能desc否则语句不起作用,例句中只输出排序中最大的值