function() over(partition by [分区字段] order by [排序字段] desc) 窗口函数的格式
窗口偏移函数
lead(),lag() 函数开窗获取上/下一条记录 (lag&lead向下偏移和向上偏移)
若偏移的地方没有值,则值记为0,其中'lag(字段A,1,0)' 字段A为根据哪一个字段进行构造,'1'为每次偏移量,向下偏移,0为没有下一条记录时的返回值;例子: lag(字段A,1,0) over(partitions by [] order by []) ;
窗口排名函数(这个重要)
row_number()从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列,如1,2,3,4
rank() 生成数据项在分组中的排名,排名相等会在名次中留下空位 ,如 1,2,2,4
dense_rank() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位,如 1,2,2,3
怎么用呢,来个简单场景,比如我要提取销售额前十的用户,
select sale_name from (select sale_name,sale_money,row_number()over(order by sale_money desc ) as rank from sale_table) temp_tab where rank between 1 and 10 ;