我有两个数值变量,并且想要计算一个变量的百分比,它至少相当于另一个变量之和的50%。
,例如
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中实现这一功能的方法。
发布于 2018-01-18 14:36:24
这里有一种你可以做到的方法--可能有一些优化要做,但这给了你想要的。
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,并将其格式化为百分比。
https://stackoverflow.com/questions/48322439
复制相似问题