如何用DAX计算列按门店对部门员工数进行排名?
按门店分组的部门员工数排名解决方案
直接用下面的DAX公式就能实现每个门店内按部门员工数降序排名(1为最多):
部门排名 = RANKX ( ALLEXCEPT ( table1, table1[store] ), CALCULATE ( COUNTA ( table1[EmployeeName] ) ), , DESC, DENSE )
原公式问题分析
你之前的公式里,第一个参数用了ALL(table1[store]),这会把排名范围扩展到所有门店的部门,导致变成全局排名而非单门店内的分组排名。另外CALCULATE里的ALLExcept(table1, table1[store])完全多余,反而会破坏当前的部门筛选上下文。
公式关键部分拆解
ALLEXCEPT(table1, table1[store]):锁定当前门店的筛选条件,移除其他所有筛选,让排名仅在当前门店的所有部门范围内进行CALCULATE(COUNTA(table1[EmployeeName])):基于当前的「门店+部门」上下文,统计该部门的员工总数DESC:明确指定按员工数降序排名,确保人数多的部门排第1DENSE:可选参数,用于处理并列情况——如果两个部门员工数相同,会获得相同排名,且后续排名不跳号(比如两个部门排第1,下一个部门直接排第2)。如果不需要这种并列规则,可以去掉该参数,默认会跳过并列后的排名号(两个部门排第1,下一个部门排第3)
内容的提问来源于stack exchange,提问作者user28046834
相关产品推荐
相关产品推荐

