2016-10-18 7 views
0

Я пытаюсь создать гистограмму, которая суммирует значения в поле, но только для каждого уникального идентификатора. Например, для моих данных:Сумма по уникальному идентификатору в Spotfire

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 

Строки дублируются различными значениями в состоянии и компании. CT_ID - это идентификатор записи.

Я хочу подвести итог колонке регистрации, но я буду переполнен. Поэтому я подумал, что могу создать собственное выражение типа:

Но это как-то недействительное выражение. Где я иду не так?

Для моей гистограммы я хотел бы иметь условие как ось категории и регистрацию в качестве оси значений. В приведенной ниже таблице показано, как рассчитывается значение регистрации. Сосредоточьтесь на условия 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. Если я отфильтрую условие «I» (первое в первой строке), теперь значение регистрации будет равно нулю!

Любая помощь, которую вы можете предоставить, была бы признательна! Я не эксперт в выражениях OVER, поэтому, надеюсь, есть простое решение!

+1

Вложенные агрегаты не допускаются в версиях до 7.0. Вы используете что-то, кроме 7.0 или 7.5? – scsimon

+0

Я использую 7.0.1. – scrrd

ответ

0

Этого еще недостаточно, чтобы прокомментировать ...

Можете ли вы предоставить некоторые ожидаемые результаты? Похоже, что у каждого CT_ID может быть только одно значение, поэтому SUM из них отчетливо будет только одним из значений ... правильно? Если нет, что определяет дубликат?

Вот как вы можете выполнить то, что вы пытались выполнить в своем коде выше, но из ваших тестовых данных не только вы получите значение Enrollment, так как каждый CT_ID, по-видимому, имеет только одно значение (дублируется).

Sum([Enrollment]) over ([CT_ID])/Count() OVER ([CT_ID]) 

Вы также можете просто использовать First()

First([Enrollment]) OVER ([CT_ID]) 

EDIT

Поскольку у вас есть некоторые дубликаты и некоторые из них не ... давайте просто разделить дублирующие в среднем количество дубликатов. Вставьте этот вычисляемый столбец:

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.

+0

Итак, я думаю, что оба они будут хорошо работать в перекрестном столе, но ни один из них не работает для моей гистограммы. Даже когда я добавляю агрегацию (например, «Сумма (первая ([Регистрация]) OVER ([CT_ID]))), она все еще говорит, что она недействительна. – scrrd

+0

Я также добавил более подробно к сообщению, которое, надеюсь, поможет лучше объяснить, какова должна быть моя конечная цель. – scrrd

+0

Я вижу @scrrd. Я добавил редактирование. – scsimon

Смежные вопросы