使用聚合函数进行 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 语句转换为聚合。
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 语句转换为聚合。