永洪社区

标题: 如何计算完成率最后三名 [打印本页]

作者: yhdata_Q3Qfp1KV    时间: 2023-7-20 15:12
标题: 如何计算完成率最后三名
完成率为计算列,如果完成率数值相同时如何取后三名呢?

作者: yanieye    时间: 2023-7-20 15:12
有直接的函数:
先把对应列的值都收集到一个数组,然后用large,或者small获取值。
比如
var vals = [1,3,2,4,8,6];
var max1 = large(vals, 1);
var max2 = large(vals, 2);
var min1 = small(vals, 1);
var min2 = small(vals, 2);

作者: yhdata_ruby    时间: 2023-7-20 15:16
取这个值做什么啊
作者: yhdata_Q3Qfp1KV    时间: 2023-7-20 15:19
本帖最后由 yhdata_Q3Qfp1KV 于 2023-7-20 15:21 编辑
yhdata_ruby 发表于 2023-7-20 15:16
取这个值做什么啊

前三名显示绿色,后三名高亮显示为黄色,低于平均值显示为红色;应该如何取前三名、后三名以及平均值参数呢

作者: 小鱼儿    时间: 2023-7-20 15:27
本帖最后由 小鱼儿 于 2023-7-20 15:28 编辑

我之前把前三的第三名a1,后三的第三名a2,平均数a3都取出来作为参数,在高亮那里设置过滤条件做的,完成率>a1 绿色,完成率<a2,黄色,完成率<a3,红色。类似于通过图表设置高级排序降序top3,脚本取表格的第三行数据,赋值给参数,然后把图表隐藏
我觉得有点笨这个方法,仅供参考

作者: yhdata_ruby    时间: 2023-7-20 15:35
yhdata_Q3Qfp1KV 发表于 2023-7-20 15:19
前三名显示绿色,后三名高亮显示为黄色,低于平均值显示为红色;应该如何取前三名、后三名以及平均值参数 ...

目前的高亮功能暂不支持,可以考虑四楼的方法
作者: yhdata_Q3Qfp1KV    时间: 2023-7-20 15:36
小鱼儿 发表于 2023-7-20 15:27
我之前把前三的第三名a1,后三的第三名a2,平均数a3都取出来作为参数,在高亮那里设置过滤条件做的,完成率 ...

不笨不笨,我现在也是设置参数,在高亮那过滤,但是完成率是计算列,没有办法再聚合,平均数我用总完成率/总行数求得,但不知道应该如何求前三名、后三名
作者: yhdata_Q3Qfp1KV    时间: 2023-7-20 15:39
yhdata_ruby 发表于 2023-7-20 15:35
目前的高亮功能暂不支持,可以考虑四楼的方法

想知道如何取数,并不是如何设置高亮哦
作者: yhdata_ruby    时间: 2023-7-20 15:47
yhdata_Q3Qfp1KV 发表于 2023-7-20 15:39
想知道如何取数,并不是如何设置高亮哦

var data=getViewData("图表1")
param['a']=data.get(2,0) //get是取的表格的第几行第几列的数据

把获取到的值作为一个参数,高亮里去设置
作者: yhdata_Q3Qfp1KV    时间: 2023-7-20 16:11
yhdata_ruby 发表于 2023-7-20 15:47
var data=getViewData("图表1")
param['a']=data.get(2,0) //get是取的表格的第几行第几列的数据

目标完成率这一列数据是无序的,现在取到了平均值,不知如何取前三名,后三名,因为前三名后三名不是固定在第几行第几列
param['max1']=a.get(4,6)      //给参数设置默认值为第一个数据,a.get(1,1)表示获取第2行第2列的数据,表格行列数从0开始计算,根据数据所在行列数自行修改即可
param['min1']=a.get(4,6)       //给参数设置默认值为第二个数据
for(var i=4;i<a.size();i++){
if(a.get(i,6)>param['max1']){
param['max1']=a.get(i,6)     //获取最大值作为参数max
param['avg1']=a.get(3,5)/a.get(i,6)
}
if(a.get(i,6)<param['min1']){
param['min1']=a.get(i,6)     //获取最小值作为参数min

}
}
作者: yhdata_ruby    时间: 2023-7-20 16:14
yhdata_Q3Qfp1KV 发表于 2023-7-20 16:11
目标完成率这一列数据是无序的,现在取到了平均值,不知如何取前三名,后三名,因为前三名后三名不是固定 ...

无序只能通过升序降序获取到前三和后三的数据了
作者: 宋宋    时间: 2023-7-20 16:50
yhdata_Q3Qfp1KV 发表于 2023-7-20 16:11
目标完成率这一列数据是无序的,现在取到了平均值,不知如何取前三名,后三名,因为前三名后三名不是固定 ...


作者: yanieye    时间: 2023-7-20 20:01
如果不能用列排序,参考一下这个从数组里面直接取。

var vals = [1, 3, 5, 2,6,9,4];
var max1 = maxa(vals);
vals = removeValueFromArray(vals, max1);
var max2 = maxa(vals);
vals = removeValueFromArray(vals, max2);
var max3 = maxa(vals);
var min1 = mina(vals);
vals = removeValueFromArray(vals, min1);
var min2 = mina(vals);
vals = removeValueFromArray(vals, min2);
var min3 = mina(vals)

function removeValueFromArray(vs, v) {
   var nvs = new Array();
   var first = true;

   for(var t = 0; t < vs.length; t++) {
      if(vs[t] == v && first) {
         first = false;
         continue;
      }

      nvs[nvs.length] = vs[t];
   }

   return nvs;
}
作者: 小么小二郎    时间: 2023-7-20 20:37
筛选可以吗?
作者: yanieye    时间: 2023-7-20 20:39
小么小二郎 发表于 2023-7-20 20:37
筛选可以吗?

好好看看要求和限制
作者: yhdata_EiNLfhmz    时间: 2023-7-21 21:18
加个过滤




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4