SQL中ROW_NUMBER() OVER()函数的简单使用

最近在写一个SQL脚本,主要是将来源表每个月的增量数据全量导入到目标表中,并实现每个月底定时调度。但是来源表中对于一个用户由于更新时间的不同会存在多条记录,当然我们只需要取最新的一条记录使用,就要用到row_number()这个函数,下面介绍一下它的简单用法:
语法格式:row_number() over(partition by 分组列 order by 排序列 desc/asc)
它会根据分组列首先进行分组,然后在组内进行升序降序排列

select  *
from(select *,
			row_number()over(partition by user_id order by update_time desc) rank 
	from table) t1
where t1.rank = '1';

按照用户id根据更新时间进行组内降序排序,取rank值为1的记录就是用户最新记录
很重要的一点,在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值