【问题标题】:get average elapsed time for each month获取每个月的平均经过时间
【发布时间】:2020-01-14 21:41:34
【问题描述】:

我有一张表,上面有输入日期和完成日期(记录可以追溯到几年前),我需要编写一个查询,给出每个月完成的平均时间。我可以得到总体平均值,

SELECT AVG ( t.completion_dt - t.entry_dt ) * 24 
  FROM table t;

特定月份的平均值

SELECT AVG ( t.completion_dt - t.entry_dt ) * 24 
  FROM table t
 WHERE t.entry_dt BETWEEN to_date('2018/12/01','yyyy/mm/dd') AND
                          to_date('2019/1/01', 'yyyy/mm/dd');

有没有办法让查询返回每个月的平均值?

【问题讨论】:

    标签: sql oracle group-by


    【解决方案1】:

    如果您想独立查看每个月/年(2020 年 1 月与 2019 年 1 月在不同的行),那么您可以对在该月截断的 entry_dt 字段进行分组。

    SELECT trunc(t.entry_dt,'MM'),
           AVG ( t.completion_dt - t.entry_dt ) * 24 
      FROM table t
    group by trunc(t.entry_dt,'MM');
    

    如果您想将多年内所有 1 月的月份平均在一起,您将需要对 entry_dt 字段的 to_char 之类的内容进行分组。

    SELECT to_char(t.entry_dt, 'Month'),
           AVG ( t.completion_dt - t.entry_dt ) * 24 
      FROM table t
    group by to_char(t.entry_dt, 'Month');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      相关资源
      最近更新 更多