【问题标题】:Average open bug life in days以天为单位的平均打开错误寿命
【发布时间】:2021-11-09 23:17:09
【问题描述】:

我希望根据严重性确定未解决问题的平均生命周期(以天为单位)。

bug severity status date_assigned
1 A open 2021-9-14
1 A in progress 2021-9-15
1 A fixed 2021-9-16
1 A verified 2021-9-17
1 A closed 2021-9-18
2 B opened 2021-10-18
2 B in progress 2021-10-19
2 B closed with fix 2021-10-20
3 C open 2021-11-20
3 C review 2021-11-21
3 C close 2021-11-22
4 A open 2021-12-24
4 A closed 2021-12-26

我想跟踪每个严重​​性(A、B、C、D)从它们的第一个状态(如(打开/打开)到其状态更改为关闭(关闭/关闭/关闭)所需的天数)修复)

这是我迄今为止尝试过的,

select severity, count(distinct date_assigned) as no_of_days 
from Table 1 as a
join Table 1 as b
where status = 'open' | 'opened' and status = 'close' | 'closed' | 'closed with fix'

但这并没有给我预期的输出

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql apache-spark apache-spark-sql


【解决方案1】:

假设每个 bug 有一个“打开”和“关闭”,那么您可以使用两个级别的聚合:

select severity,
       avg( close_date - open_date ) as avg_days
from (select bug, severity, min(date_assigned) as open_date,
             max(date_assigned) as close_date
      from table1
      where status like '%open%' or
            status like '%closed%'
      group by bug, severity
     ) t1
group by severity
order by severity;

请注意,日期函数因数据库而异。数据差异的确切语法可能与上述不同。

编辑:

在 Databricks 中,我认为您想要:

select severity,
       avg( datediff(close_date, open_date) ) as avg_days

【讨论】:

  • 打开表示为“打开”或“打开”,同样关闭状态表示为关闭或关闭或“关闭并修复”
  • 我应该在 like 运算符中添加字符串的其余部分吗?
  • @Yash 。 . . like 逻辑应该是标识打开和关闭的任何内容。以上似乎是一个简单的实现。
猜你喜欢
  • 2014-07-26
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多