今天就跟大家聊聊有关MySQL 8.0窗口函数怎么运行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

#ROW_NUMBER()当前行在所有结果里的序号#CUME_DIST()累计分布百分比。即<=a的行数在所有数据里占的比例#PERCENT_RANK()百分比排名。(rank-1)/(rows-1),即累计(<a)行数/(total-1)SELECTa,ROW_NUMBER()OVERwAS'row_number',CUME_DIST()OVERwAS'cume_dist',PERCENT_RANK()OVERwAS'percent_rank'FROMtbtWINDOWwAS(ORDERBYa);

#LAG(expr[,N[,default]])N默认是1,default默认是null#LEAD(expr[,N[,default]])N默认是1,default默认是nullSELECTcreate_time,id,LAG(id)OVERwAS'上1行的id',LEAD(id)OVERwAS'下1行的id',LAG(id,3,0)OVERwAS'上3行的id',LEAD(id,3,0)OVERwAS'下3行的id'FROMtbtWINDOWwAS(ORDERBYcreate_time);

#FIRST_VALUE(val)同一个分组,第一个值#LAST_VALUE(val)同一个分组,最后一个值#NTH_VALUE(val,N)同一个分组,第N值SELECTa,create_time,id,FIRST_VALUE(id)OVERwAS'first',LAST_VALUE(id)OVERwAS'last',NTH_VALUE(id,3)OVERwAS'third'FROMtbtWINDOWwAS(PARTITIONBYaORDERBYcreate_time);

# NTILE(N) 将同一个partition(如果未定义,则相当于全表) 分为N组,返回当前行所在的组序号

SELECT

a,

ROW_NUMBER() OVER w AS 'row_number',

NTILE(2) OVER w AS 'ntile2',

NTILE(4) OVER w AS 'ntile4'

FROM tbt

WINDOW w AS (ORDER BY a);

SELECTa,create_time,ROW_NUMBER()OVERwAS'row_number',NTILE(2)OVERwAS'ntile2',NTILE(4)OVERwAS'ntile4'FROMtbtWINDOWwAS(PARTITIONBYaORDERBYcreate_time);

看完上述内容,你们对MySQL 8.0窗口函数怎么运行有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。