BIRT: вычисление среднего значения интервала времени - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть следующая таблица базы данных, состоящая из ряда задач:

id BIGINT NOT NULL
time_in timestamp(0) with time zone,
time_out timestamp(0) with time zone,
user_name text NOT NULL

Я вычисляю продолжительность задачи как (time_out - time_in).Сначала мне нужно вычислить среднюю продолжительность задачи для данного пользователя, а затем для всех пользователей.

Я делаю первое в запросе SQL, используемом для получения набора данных.Результатом этого является INTERVAL, но в BIRT он рассматривается как String (возможно, из-за того, что тип данных INTERVAL отсутствует).

Так что теперь у меня есть набор строк, каждая из которых представляет INTERVAL.Как мне вычислить их среднее значение?

PS Сначала я подумал, что должен сделать это, используя тип данных BIRT 'Time'.Тем не менее, «Время» представляет время дня, а не интервал.Кажется, что нет равных для ИНТЕРВАЛА в BIRT.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

Вы пробовали использовать агрегатную функцию avg?

ВЫБЕРИТЕ avg (time_out - time_in) как user_avg ОТ задач WHERE user_name = 'bob';

ВЫБЕРИТЕ avg (time_out - time_in) как all_avg ОТ задач;

0 голосов
/ 03 февраля 2011

Не знаком с birt, но я думаю, что лучшим способом было бы позволить PostgreSQL сделать это.Определите представление, которое выполняет усреднение, и просто ВЫБЕРИТЕ из него.

...