Есть в QV аналог аналитическим функциям в Oracle?

Автор evaeve1en, октября 30, 2015, 10:32:46 am

« предыдущая - следующая »

evaeve1en

Добрый день! Мне очень нужна помощь.
Задача звучит просто, но как сделать пока не могу найти.

Задача:
Есть задания (tasks), есть логи изменения их состояний (task_logs)
Выглядит это допустим так:


Мы видим, что task1 (task_id=1) был 'создан'(created), 'назначен'(assigned) и 'взят в работу'(active) в неделю под номером W43.
А task2 был создан и назначен в W42, в W43 с ним ничего не происходило, поэтому нет ни одной записи за эту неделю о изменении его статуса, а в W44 он был решен и закрыт.

Мне же необходимо построить chart с грануляцией по неделям с информацией сколько же в каждую неделю было незакрытых task-ов(т.е. все задания в статусах не равных 'закрыт'). За W43 у меня есть записи в логах только по одному task-у, но 'незакрытых' task-ов должно посчитаться 2, а не 1.

Каким образом можно это сделать? в оракле я б использовала аналитические функции, а тут мне не хватает знаний.

Огромное спасибо за помощь! очень жду ваших советов

bibis

ноября 02, 2015, 09:46:19 am #1 Последнее редактирование: ноября 02, 2015, 10:08:43 am от bibis
Добрый день. Первое,что приходит в голову
Сначала перестроить таблицу, так чтобы появилось 2 столбца: BEGIN_wk END_wk:
Примерно так:
tmp:
LOAD *,
if(id_task=Previous(id_task) ,   Previous(week),  weekname('01.01.2100') ) as END_wk, weekname(log_updated_at) as BEGIN_wk
from task_logs  where  status='created' or  status='closed'
Order by id_task, log_updated_at desc;

interval_table:
load * resident tmp where status='created';

drop table tmp;


Затем можно это дело привязать к календарю через
Intervalmatch (WEEK_FROM_CALENDAR) load BEGIN_WK ,END_WK resident tmp;

Ну и дальше считать через count  distinct



Рейтинг@Mail.ru Яндекс.Метрика