У меня есть следующая таблица фактов:
response_history_id client_id question_id answer
1 1 2 24
2 1 2 27
3 1 3 12
4 1 2 43
5 2 2 39
Содержит историю ответов клиента на некоторые вопросы. Самый большой response_history_id для каждой комбинации client_id, question_id является последним ответом на этот вопрос и клиента.
Я хочу подсчитать количество клиентов, чей последний ответ попадает в определенный диапазон
У меня есть некоторые размеры:
question associated with question_id
client associated with client_id
response_history_id associated with response_history_id
range associated with answer. 0-20 low, 20-40 = medium, >40 is high
и некоторые меры:
max_history_id as max(response_history_id)
clients_count as disticnt count(client_id)
Теперь я хочу сгруппировать только самые последние ответы по диапазону:
select
[ranges].members on 0,
{[Measures].[clients_count]} on 1
from (select [question].[All].[2] on 1 from [Cube])
Что я получаю:
Measures All low medium high
clients_count 2 0 2 1
Но то, что я хотел (и я не могу получить), - это расчет, основанный на последнем ответе:
Measures All low medium high
clients_count 2 0 1 1
Я понимаю, почему мой запрос не дает желаемого результата, это скорее для демонстрации. Но я пробовал много более сложных запросов MDX и все еще не смог получить хороший результат.
Кроме того, я не могу сгенерировать статическое представление из моей таблицы фактов, потому что позже я хотел бы ограничить поиск другим столбцом таблицы фактов, который является меткой времени, и мои запросы должны в конечном итоге получить _ количество клиентов, последний ответ на вопрос до того, как данная временная метка попадает в определенный диапазон.
Может кто-нибудь помочь мне с этим, пожалуйста?
Я могу определить другие измерения и меры, и я использую iccube.