2016-08-08 6 views
0
╔═══╦════════════╦═════════════╗ 
║id ║ TV#  ║ Time  ║ 
╠═══╬════════════╬═════════════╣ 
║ 1 ║ TV1  ║ 0   ║ 
║ 2 ║ TV2  ║ 10   ║ 
║ 3 ║ TV3  ║ 0   ║ 
║ 4 ║ TV3  ║ 20   ║ 
║ 5 ║ TV3  ║ 21   ║ 
║...║ ...  ║ ...   ║ 
╚═══╩════════════╩═════════════╝ 

Я хочу, чтобы подсчитать количество элементов идентификатора для каждого телевизора #, который время> 0. В этом случае, я хочу, чтобы результат:отчет Birt - подсчитать, сколько раз он соответствует критериям

TV1 - 0; TV2 - 1; TV3 - 2

Я использую BIRT Report, и я пробовал разные способы получить это, но я не мог получить то, что хочу.

Я пробовал разные способы, это то, что я использую в данный момент:

данных куба, Конспект поля (мера)

Функция: Count

выражение: мера [ "ID"]

Фильтр: измерение [ "Время"]> 0

И й ан Я использую Aggregation Builder:

Функция: Count или Sum

выражение: мера [ "ID"]

Фильтр: измерение [ "Время"]> 0

Совокупные на: GroupTV #

когда я использую граф, это возвращается: только 0s и 1s (это дает мне «1» на ТВ #, когда есть по крайней мере один Time> 0), т. е. TV1 - 0; TV2 - 1; TV3 - 1

Когда я использую sum, это возвращается: количество раз, когда каждый TV # появляется на столе (когда для этого канала есть хотя бы одно время> 0), т.е. TV1 - нет выхода; TV2 - 1; TV3 - 3

Может кто-нибудь мне помочь?

+0

Да ладно. Попробуйте что-нибудь. – Strawberry

+0

@Strawberry - немного нечестный комментарий, поскольку blocnt описал две вещи, которые он пробовал, и объяснил, как они оба не могут получить требуемые результаты. – PaulF

ответ

0

Вместо используя фильтры в Data Cube или на вкладках «Переходы» или «Графики», просто фильтруйте наборы данных.

0

т.д .:

SELECT tv 
    , SUM(CASE WHEN time > 0 THEN 1 ELSE 0 END) x 
    FROM my_table 
GROUP 
    BY tv; 
+0

спасибо, где эта структура должна использоваться? как фильтр? – blocnt

+0

Это относится к тегу mysql. Я ничего не знаю о Birt – Strawberry

0

метод Либо должны работать, однако в вашем примере вы подсчета вхождений определенного идентификатора вместо «TV #». Естественно, поскольку идентификаторы уникальны, их будет только один раз.

Понадобится:

Функция: Count

Expression: переход от 'ид' на 'ТВ #'

Фильтр: измерение [ "Время"]> 0

+0

Это не работает. Он только дает мне «1» или «0» (он правильно идентифицирует, когда есть время> 0, но не сколько раз это случается) – blocnt

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

  • Нет связанных вопросов^_^