postgresql 分类排名

postgresql 分类排名

排名窗口函数

排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括:

ROW_NUMBER ,为分区中的每行数据分配一个序列号,序列号从 1 开始分配。

RANK ,计算每行数据在其分区中的名次;如果存在名次相同的数据,后续的排名将会

产生跳跃。

DENSE_RANK ,计算每行数据在其分区中的名次;即使存在名次相同的数据,后续的

排名也是连续的值。

PERCENT_RANK ,以百分比的形式显示每行数据在其分区中的名次;如果存在名次相

同的数据,后续的排名将会产生跳跃。

CUME_DIST ,计算每行数据在其分区内的累积分布,也就是该行数据及其之前的数据

的比率;取值范围大于 0 并且小于等于 1。

NTILE ,将分区内的数据分为 N 等份,为每行数据计算其所在的位置。

排名窗口函数不支持动态的窗口大小(frame_clause),而是以当前分区作为分析的窗口。

示例

按照部门为单位,计算员工的月薪排名:

sql 复制代码
select
first_name,last_name,department_id,salary,
row_number() over(partition by department_id order by salary desc),
rank() over(partition by  department_id order by salary desc),
dense_rank() over(partition by  department_id order by salary desc),
percent_rank() over(partition by  department_id order by salary desc)
from employees;

以上示例中 4 个窗口函数的 OVER 子句完全相同,此时可以采用一种更简单的写法:

sql 复制代码
select
first_name,last_name,department_id,salary,
row_number() over w,
rank() over w,
dense_rank() over w,
percent_rank() over w
from employees
window w as  (partition by  department_id order by salary desc);

CUME_DIST 和 NTILE

sql 复制代码
select
first_name,last_name,department_id,salary,
cume_dist() over w,
ntile(6) over w
from employees
window w as  (partition by department_id order by salary desc);
相关推荐
PrudentWoo13 小时前
PostgreSQL 12 登录失败:role “postgres“ is not permitted to log in 的排查与修复
数据库·postgresql
Meta3914 小时前
PostgreSQL报SELECT rule‘s target entry X has different type from column “XXX“
数据库·postgresql·dubbo
天天喝旺仔17 小时前
PostgreSQL 慢查询治理实战:读懂 EXPLAIN ANALYZE 执行计划,落地复合索引、部分索引与覆盖索引
sql·postgresql·性能优化·数据库开发
2601_9622838819 小时前
Django数据库配置(一)
mysql·postgresql·django·sqlite·数据库配置
AugustSkys20 小时前
PostgreSQL 完全指南:特性对比 + 安装部署 + 配置管理 + psql 实战 + pgAdmin 图形化
运维·postgresql·开源数据库·pgadmin
必须会一定会21 小时前
Spring Boot 3 + PostgreSQL 场景工程持久化:revision、contentHash 与历史回滚
人工智能·spring boot·后端·postgresql·ai编程
IvorySQL1 天前
PostgreSQL 日报|不重启动态修改 shared_buffers(9 月 8 日)
数据库·postgresql
Msshu1231 天前
快充诱骗取电芯片XSP26A 支持全协议取电+串口发送充电器功率+共用D+D-网络
mongodb·postgresql·etcd·flume·consul·kylin
行业研究员2 天前
腾讯云数据库 PostgreSQL 让相关子查询跑上多核
数据库·postgresql·腾讯云
IvorySQL2 天前
PostgreSQL 日报 |SUM-AVG 溢出检测不足(9 月 5 日)
数据库·postgresql·区块链