MySQL窗口函数—分布函数- CUME_DIST和PERCENT_RANK
【摘要】
CUME_DIST()
用途:分组内小于、等于当前rank值的行数 / 分组内总行数
应用场景:查询小于等于当前薪资(salary)的比例
select dname, ename, salary, cume_dist() over(order by salary) as rn1, -- 没有partition语句 所有的数据位...
CUME_DIST()
用途:分组内小于、等于当前rank值的行数 / 分组内总行数
应用场景:查询小于等于当前薪资(salary)的比例
-
select
-
dname,
-
ename,
-
salary,
-
cume_dist() over(order by salary) as rn1, -- 没有partition语句 所有的数据位于一组
-
cume_dist() over(partition by dname order by salary) as rn2
-
from employee;
-
/*
-
rn1: 没有partition,所有数据均为1组,总行数为12,
-
第一行:小于等于3000的行数为3,因此,3/12=0.25
-
第二行:小于等于4000的行数为5,因此,5/12=0.4166666666666667
-
rn2: 按照部门分组,dname='研发部'的行数为6,
-
第一行:研发部小于等于3000的行数为1,因此,1/6=0.16666666666666666
-
*/
PERCENT_RANK
用途:每行按照公式(rank-1) / (rows-1)进行计算。
其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数
应用场景:不常用
-
select
-
dname,
-
ename,
-
salary,
-
rank() over(partition by dname order by salary desc ) as rn,
-
percent_rank() over(partition by dname order by salary desc ) as rn2
-
from employee;
-
/*
-
rn2:
-
第一行: (1 - 1) / (6 - 1) = 0
-
第二行: (1 - 1) / (6 - 1) = 0
-
第三行: (3 - 1) / (6 - 1) = 0.4
-
*/
这个应用场景还是不是很多,按照排名直接进行计算,其实可以转为为前面比你大的还有多少人
每文一语
加油!
文章来源: wxw-123.blog.csdn.net,作者:王小王-123,版权归原作者所有,如需转载,请联系作者。
原文链接:wxw-123.blog.csdn.net/article/details/123552627
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)