窗口函数的名字是over()函数,常用的有两个属性partition by和order by,partition by类似于group by,我们通常将group by叫做分组,而partition by称作分区,分组返回通常是一行,partition by返回的是多行。 为每条记录返回一个数字。 lag ,lead 分别是向前,向后; 备注:超出记录窗口时的默认值其实就是自己定义数字,填充。 select sno, ● RANK函数
前言:
窗口函数的威力是与其他函数联合使用,窗口函数主要和统计函数,排名函数,错行的函数联合使用.1、row_number() over() 函数
select sno,sname,ssex,row_number() over(order by sno desc ) 排名 from student;
select sno,sname,ssex,row_number() over(order by sno desc ) 排名 from student where sno = ‘109’;
2、row_number() over (partition by order by ) 结合使用
select sno,sname,ssex,sclass,row_number() over(partition by sclass order by sno desc ) rank from student;
3、 RANK()
rank 返回数据项在分组中的排名,排名相等会在名次中留下空位:
LAG:
lag 和lead 有三个参数,第一个参数是列名,第二个参数是偏移的offset,第三个参数是 超出记录窗口时的默认值
LAG(column_name1,1) OVER(ORDER BY column_name2)
LEAG(column_name1,1) OVER(ORDER BY column_name2)select sno,sname,ssex,lag(sclass,1,222)over(order by sclass desc) from student
没加记录超出默认值时的参数:如下
以上sclass括号内的1 加不加都是可以执行通的。
sname,
ssex,
lead (sclass, 1) over(order by sclass desc) 对应班级号
from student order by sno desc;
总结:
注意:row_number含数前面的字段后是要加逗号的不然报错;因为本人老是忘记。
partition by:分组后的记录集合称为窗口。此处的窗口并非“窗户”的意思,而是代表范围。这也是窗口函数的由来。
通过PARTITION BY分组后的记录集合称为“窗口”。
计算排序时,如果存在相同位次的记录,则会跳过之后的位次。
例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、4 位……
● DENSE_RANK函数
同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。
例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、2 位……
● ROW_NUMBER函数
赋予唯一的连续位次。
例)有 3 条记录排在第 1 位时:1 位、2 位、3 位、4 位……
暂时就这么多,如果还有,我会在添加进来的。
【转载注明出处,尊重原创 】
【作者水平有限,如有错误欢迎指正 .】
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算