【问题标题】:BIRT: Computing the average of a time intervalBIRT:计算时间间隔的平均值
【发布时间】:2011-02-03 13:14:24
【问题描述】:

我有以下由一系列任务组成的数据库表:

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。我如何计算它们的平均值?

附:我首先认为我应该通过使用 BIRT 'Time' 数据类型来做到这一点。但是,“时间”代表一天中的时间,而不是时间间隔。 BIRT 中的 INTERVAL 似乎不等价。

【问题讨论】:

  • 为什么不也使用 SQL 计算第二个平均值?

标签: birt postgresql


【解决方案1】:

你试过avg聚合函数吗?

SELECT avg(time_out - time_in) as user_avg FROM tasks WHERE user_name='bob';

SELECT avg(time_out - time_in) as all_avg FROM tasks;

【讨论】:

    【解决方案2】:

    不熟悉 birt,但我认为最好的方法是让 PostgreSQL 来做。定义一个进行平均的视图,然后从中选择。

    【讨论】:

      猜你喜欢
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多