对数值进行排序并对靠前数值进行赋值

在单个单元格内有4738个数  ,对其排序  前2%的赋值为A+,前5%为A

FineReport 用户Q5607709 发布于 2020-9-23 09:54 (编辑于 2020-9-23 10:04)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
星痕Lv6高级互助
发布于2020-9-23 09:56

使用帆软的

sort()

函数获取每个值的排名,然后IF取排名判断为<=2的赋值A+,排名>2<=5的为A即可

  • 用户Q5607709 用户Q5607709(提问者) 如果数值不是100 就按百分比来应该怎么判断
    2020-09-23 09:57 
  • 星痕 星痕 回复 用户Q5607709(提问者) 无所谓你数值是多少,sort是取得所有值里头当前值的排名,本身并没有限制数值是多少
    2020-09-23 10:38 
最佳回答
0
一只彩笔Lv5初级互助
发布于2020-9-23 10:05(编辑于 2020-9-23 10:07)

可以用排名+计算来实现,先算出这100个数的排名列,再把这列隐藏,用if函数对排名相对位置的进行赋值。

类似于这种函数IF($$$/max($$$)<0.02,"A+",...)

排名设置参考-

https://help.fanruan.com/finereport/doc-view-344.html

最佳回答
0
LarryAbbyLv5中级互助
发布于2020-9-23 17:31

可以在数据库里计算好,其中rownum是给每行一个编号,row_total表示总行号

select case 

  when round(row_num/row_total,4)<=0.02 then 'A+'

  when round(row_num/row_total,4)<=0.05 then 'A'

else '其他等级' end,其他列

from(

select rownum row_num,其他列,count(1) over(partition by 1) row_total

from 表 order by 排序列)


最佳回答
0
Doctor_WeiLv7中级互助
发布于2021-4-19 15:46

先定义两个参数(获取单元格的扩展出的2%,2%到5%)

然后采用星辰的方式,用sort()比较大小

  • 5关注人数
  • 545浏览人数
  • 最后回答于:2021-4-19 15:46
    请选择关闭问题的原因
    确定 取消
    返回顶部