Bootstrap

SQL语句【OVER (PARTITION BY ..)函数】

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否则语句不起作用,例句中只输出排序中最大的值

;