PostGreSQL开窗函数

本文介绍了PostgreSQL中的开窗函数,重点讲解了over()关键字以及聚合类和内置函数如sum(), RANK()等的用法。通过举例说明了RANK(), DENSE_RANK()和ROW_NUMBER()的区别,并探讨了开窗函数如何解决group by限制问题,以及在实现TOPN场景中的实用性。此外,分享了一个实际应用场景,用于计算转化人数。" 131869732,11562258,Seata实现分布式事务:转账功能及问题解析,"['Spring Cloud', '分布式事务', 'Seata']
摘要由CSDN通过智能技术生成

PostGreSQL开窗函数

语法
<窗口函数>
over(partition by 分组列 order by 排序列)
order by 并非必要

over() 是开窗函数的关键词

窗口函数存在哪些 ?

聚合类:sum() avg() max() min() count()

内置函数:RANK DENSE_RANK ROW_NUMBER等等

聚合类的窗口函数使用方法和平时使用相同

以sum()为例

id	type	name	amount
1	 1		liliya	3600
2	 1		will	4500
3	 2		hell	2350

select 
id,
name,
amount,
sum(amount)over(partiton by type) as total_amount

结果
id 	name 	amount 	total_amount
1	liliya	3600	8100
2	will	4500	8100
3	hell	2350	2350

内置函数:RANK,DENSE_RANK,ROW_NUMBER

三者性质相同,都是对数据进行排序并且编号,不过结果存在些许的差异

以RANK为例

table name -> t1
id	type	name	amount
1	 1		liliya	3600
2	 1		will	4500
3	 2		hell	2350
4	 1		oldman	2300
5	 2		trueman	4610
6	 2		ora		2350

select 
rank()over(partition by type order by amount desc
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值