over() 窗口函数
语法结构:
分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)
partition by : 作用与group by 类似,实现分组功能
常与over一起使用的分析函数:
聚合函数:
avg(),sum(),max(),mean()
排名函数:
row_number() 产生不会重复的自增编号 (1,2,3,4,5,6.......)
rank()按照值排序的时候产生一个自增编号,值相等时会重复,有空位(eg:1,2,2,4,5,6,6,8...)
dense_rank()按照值排序的时候产生一个自增编号,值相等时会重复,无空位(1,2,2,2,3...)
其他函数:
lag(),lead(),ntile()
实例:
1.对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列
select emp_no,salary,dense_rank()over (order by salary desc) as t_rank
from salaries
order by salary desc,emp_no asc