我有以下数据库表,其中包含一系列任务:
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中它被视为一个字符串(可能是因为没有INTERVAL数据类型)。
所以现在我有一组字符串,每个字符串代表一个INTERVAL。我如何计算他们的平均值?
P.S。我首先想到我应该使用BIRT'Time'数据类型。但是,“时间”代表一天中的某个时间,而不是间隔。在BIRT中似乎没有INTERVAL的等价物。
答案 0 :(得分:0)
不熟悉birt,但我认为最好的方法是让PostgreSQL做到。定义一个进行平均的视图,并从中进行SELECT。
答案 1 :(得分:0)
您是否尝试过avg聚合功能?
SELECT avg(time_out - time_in)as user_avg FROM tasks WHERE user_name ='bob';
选择avg(time_out - time_in)作为all_avg FROM tasks;