sql窗口函数常用的函数

2019-10-28  本文已影响0人  palexe

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 ;

上一篇 下一篇

猜你喜欢

热点阅读