我有两个数值变量,并且想要计算一个变量的百分比,该变量对应于其他变量总和的至少50%。
例如 :
A | B
__________
2 | 8
1 | 20
3 | 12
5 | 4
2 | 7
1 | 11
4 | 5
这里,B列的总和是68
,所以我正在寻找行(按B的降序排列),累积和至少为34
。
在这种情况下,它们是第2,3和2行。 6(累计和45
)。这些行A列的总和为5
,我想将其与A列的总和(18
)进行比较。
因此,我正在寻找的结果是5 / 18 * 100 =
28.78%
我正在寻找一种在QlikSense或SQL中实现此功能的方法。
答案 0 :(得分:1)
这是你可以做到的一种方式 - 可能需要进行一些优化,但这可以满足您的需求。
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)
以获得所需的统计数据,并将其格式化为百分比。