欢迎投稿

今日深度:

OVER(PARTITION BY)函数的简单理解,

OVER(PARTITION BY)函数的简单理解,


最近做项目遇到的问题,想要取表中同一个人的最新记录,使用了OVER(PARTITION BY)函数,SQL如下

SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY T.证件号 ORDER BY T.数据产生日期 DESC) RN 
FROM PER_PROREG_INFO T

可以理解为给表中的数据加了一列“RN”,作为标记数据的序号,按同一证件号的数据产生日期进行排序,结果如图

想要取每个人的最新记录,在SQL外层筛选RN=1的数据即可

注:SQL中的ROW_NUMBER()可以换成RANK()和DENSE_RANK()

RANK:有并列数据(如成绩)并且跳跃排序(如有两个并列第一时,第三条数据的RN=3)

DENSE_RANK:有并列数据(如成绩)并且不跳跃排序(如有两个并列第一时,第三条数据的RN=2)

 

www.htsjk.Com true http://www.htsjk.com/teradata/31670.html NewsArticle OVER(PARTITION BY)函数的简单理解, 最近做项目遇到的问题,想要取表中同一个人的最新记录,使用了OVER(PARTITION BY)函数,SQL如下 SELECT T.*,ROW_NUMBER() OVER(PARTITION BY T.证件号 ORDER BY T.数据产生...
相关文章
    暂无相关文章
评论暂时关闭