【Power Query】用筛选和上下文 排名

国际排名

国际排名往往不是连续的整数,看起来很跳跃:

假如两个人 并列第1,虽然分数一样,但是会挤占掉第2的位置,接下来会是第3名…

例如这样:

姓名分数国际排名
A1001
B1001
C983
D983
E983
F956

于是:如果没有(0)人分数比我高,我就是第1名;如果2个人比我高,我就是第3名…
这样只要将大于我的筛选出来,再数数有几个,加上1就是我的排名

函数写法参考:

那么函数,这里算的是销量排名:

= Table.AddColumn(源, "国际排名", (d)=>Table.RowCount(Table.SelectRows(源,(x)=>x[销量]>d[销量]))+1)

步骤拆解:

在这里插入图片描述

  • (g)=>g :是定义上下文,
    括号里的 g 代表【上文】也就是目前的整个表,
    右侧的 g 代表【下文】也就是在每一行里插入的内容

  • 括号里可以写字母或文字,都没有关系,但前后要对应

中国排名

中国排名则看起来很连贯,不管前面有几个并列第1,接下来一定是从第2开始

姓名分数国际排名
A1001
B1001
C982
D982
E982
F953

于是,不管在我前面有几个人并列第1,都只算他们一个人,我还是第2 名
那么,在筛选出大于我的所有人之后,按分数去重,也就是每个排名都只剩一个人了
仍然+1,往后顺延一位,这就是我的排名了

函数写法参考:

= Table.AddColumn(源, "中国排名", each Table.RowCount(Table.Distinct(Table.SelectRows(源,(x)=>x[销量]>[销量]),"销量"))+1)

步骤拆解:

在这里插入图片描述

部门排名

函数写法参考:

以中国排名为例:

= Table.AddColumn(国际排名, "部门排名", each Table.RowCount(Table.Distinct(Table.SelectRows(国际排名,(x)=>x[销量]>[销量]and x[部门]=[部门]),"销量"))+1)

在这里插入图片描述

  • 这里的 and x[部门]=[部门],前一个部门属于 套在里面的待筛选的那个表,后一个属于外面的当前的表,
  • 当只有两个环境时,当前的环境可以不定义,默认就是,所以只写了一个字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值