sql常用的数据分析函数——窗口函数

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 ;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。