使用聚合函数进行 IF 计算

IF calculation with aggregate functions

A   B      UA
1   0    Negative
1   1    Negative
1   1    Positive
2   5    Negative
2   2    Positive

我想计算 %UA Negative 以便当 A = B 时计算 UA 列中的所有 Negatives 并将其除以 A = B 的结果总数。因此对于 A=1 和 B=1, %UA 负 = 1/2 = 0.5

我试过了:

 IF [A] = [B] THEN
     SUM(IF[UA] = 'Negative' THEN 1 ElSE 0 END)/COUNT([UA]) END

但我收到错误消息:

Cannot mix aggregate and non-aggregate comparisons or results in 'IF' expressions

您可以将第一个 IF 语句放在 Sum 和 Count 聚合中,或者将 ATTR 放在第一个 IF 语句周围。

SUM(IF [A] = [B] THEN IF[UA] = 'Negative' THEN 1 ElSE 0 END END)/COUNT(IF [A] = [B] THEN [UA] end)

IF ATTR([A]) = ATTR([B]) THEN
 SUM(IF[UA] = 'Negative' THEN 1 ElSE 0 END)/COUNT([UA]) END

后者将您的第一个 IF 语句转换为聚合。