我正在尝试创建一个条形图,汇总字段中的值,但仅用于每个唯一标识符。例如,对于我的数据:
Condition CT_ID Enrollment Company
I 5127 24 H
J 5127 24 H
P 5127 24 H
I 5127 24 O
J 5127 24 O
P 5127 24 O
L 27668 387 C
R 27668 387 C
D 38190 650 D
Q 38190 650 D
F 38785 30 A
E 39682 30 B
M 41818 17 I
O 44093 188 G
A 54850 18 K
G 59183 F
C 59891 266 J
G 61142 48 F
H 61425 28 L
K 61449 N
A 61793 12 E
N 61793 12 E
B 61910 120 M
B 61917 120 M
B 61961 130 M
或者,由于我确实想最终按条件总结这些数据,所以让我只显示按条件而不是[CT_ID]得出的上述数据。
Condition CT_ID Enrollment Company
A 54850 18 K
A 61793 12 E
B 61910 120 M
B 61917 120 M
B 61961 130 M
C 59891 266 J
D 38190 650 D
E 39682 30 B
F 38785 30 A
G 59183 F
G 61142 48 F
H 61425 28 L
I 5127 24 H
I 5127 24 O
J 5127 24 H
J 5127 24 O
K 61449 N
L 27668 387 C
M 41818 17 I
N 61793 12 E
O 44093 188 G
P 5127 24 H
P 5127 24 O
Q 38190 650 D
R 27668 387 C
这些行被Condition和Company中的不同值所重复。CT_ID是记录的标识符。
我想总结一下我的招生专栏,但我会多算的。所以我想我可以创建一个自定义表达式:
Sum(Avg([Enrollment]) OVER ([CT_ID]))
但这不是一个有效的表达式。我哪里做错了?
对于我的条形图,我想让Condition作为类别轴,Enrollment作为值轴。下表显示了如何计算Enrollment值。关注条件P、I和j
Condition Enrollment
A 30
B 370
C 266
D 650
E 30
F 30
G 48
H 28
I 24
J 24
K
L 387
M 17
N 12
O 188
P 24
Q 650
R 387
我目前的解决方案使用排名函数,并且只将每个唯一的CT_ID的注册信息放在第一行,但是当我开始过滤数据时,这是完全错误的。例如,假设在上面的数据集中,CT_ID 5127的第一行只有一个Enrollment值。如果我过滤掉条件"I"(第一行中的条件),那么现在Enrollment值为零!
如果您能提供任何帮助,我将不胜感激!我不是OVER表达式的专家,所以希望有一个简单的解决方案!
注释太长了…
你能提供一些预期的结果吗?看起来好像每个CT_ID
只能有一个值,所以它们中的SUM
可以是任意一个值…对吧?如果不是,是什么决定了重复?
这里是你如何完成你在上面的代码中尝试的——但是从你的测试数据不仅仅是要给你Enrollment
的值,因为每个CT_ID
似乎只有一个值(重复)。
Sum([Enrollment]) over ([CT_ID]) / Count() OVER ([CT_ID])
你也可以直接用First()
First([Enrollment]) OVER ([CT_ID])
编辑
因为你有有些重复,有些没有…我们把重复数分成重复数的平均值。插入计算列:
Max([Enrollment]) over (Intersect([CT_ID],[Condition])) / Count([Enrollment]) over (Intersect([CT_ID],[Condition]))
然后在您想要忽略重复项的任何表达式中使用此列来代替Enrollment
,其中重复项是相同的Condition, CT_ID, and Enrollment
值。
…Condition = P and CT_ID = 5127
的行将有12
而不是24
。