首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与其他变量百分比相对应的变量百分比

与其他变量百分比相对应的变量百分比
EN

Stack Overflow用户
提问于 2018-01-18 13:24:00
回答 1查看 52关注 0票数 1

我有两个数值变量,并且想要计算一个变量的百分比,它至少相当于另一个变量之和的50%。

,例如

代码语言:javascript
运行
复制
A   |   B
__________
2   |   8
1   |  20
3   |  12
5   |   4
2   |   7
1   |  11
4   |   5

在这里,列B的和是68,所以我要查找累积和至少是34的行(按B的降序排列)。

在这种情况下,它们是第2行、第3行和第6行(45的累积和)。这一行的A列之和是5,我想将它与A列(18)的总和进行比较。

因此,我要寻找的结果是5 / 18 * 100 = 28.78%

我正在寻找一种在QlikSense或SQL中实现这一功能的方法。

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 14:36:24

这里有一种你可以做到的方法--可能有一些优化要做,但这给了你想要的。

代码语言:javascript
运行
复制
Source: 
LOAD 
    *,
    RowNo() as RowNo_Source
Inline [
A , B
2 , 8
1 , 20
3 , 12
5 , 4
2 , 7
1 , 11
4 , 5
];

SourceSorted:
NoConcatenate LOAD *,
    RowNo() as RowNo_SourceSorted
Resident Source
Order by B asc;

drop table Source;

BTotal:
LOAD sum(B) as BTotal
Resident SourceSorted;

let BTotal=peek('BTotal',0);

SourceWithCumu:
NoConcatenate LOAD
    *,
    rangesum(peek('BCumu'),B) as BCumu,
    $(BTotal) as BTotal,
    rangesum(peek('BCumu'),B)/$(BTotal) as BCumuPct,
    if(rangesum(peek('BCumu'),B)/$(BTotal)>=0.5,A,0) as AFiltered
Resident SourceSorted;

Drop Table SourceSorted;

我使用了一个可能有用的调试字段,但您当然可以删除这些字段。

然后,在前端进行sum(AFiltered)/sum(A)计算,以获得所需的stat,并将其格式化为百分比。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48322439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档