做拼多多网站赚钱吗,花店网站建设,destoon做的网站,石家庄谁会搭建网站postgresql 分类排名 排名窗口函数示例CUME_DIST 和 NTILE 排名窗口函数
排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括#xff1a; • ROW_NUMBER#xff0c;为分区中的每行数据分配一个序列号#xff0c;序列号从 1 开始分配。 • RANK#xff0c;计算每… postgresql 分类排名 排名窗口函数示例CUME_DIST 和 NTILE 排名窗口函数
排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括 • ROW_NUMBER为分区中的每行数据分配一个序列号序列号从 1 开始分配。 • RANK计算每行数据在其分区中的名次如果存在名次相同的数据后续的排名将会 产生跳跃。 • DENSE_RANK计算每行数据在其分区中的名次即使存在名次相同的数据后续的 排名也是连续的值。 • PERCENT_RANK以百分比的形式显示每行数据在其分区中的名次如果存在名次相 同的数据后续的排名将会产生跳跃。 • CUME_DIST计算每行数据在其分区内的累积分布也就是该行数据及其之前的数据 的比率取值范围大于 0 并且小于等于 1。 • NTILE将分区内的数据分为 N 等份为每行数据计算其所在的位置。 排名窗口函数不支持动态的窗口大小frame_clause而是以当前分区作为分析的窗口。
示例
按照部门为单位计算员工的月薪排名
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 子句完全相同此时可以采用一种更简单的写法
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
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);