0

我有一个表,其中包含类似于以下列的内容:

infopath_form_id     (integer)
form_type            (integer)
approver             (varchar)
event_timestamp      (datetime)

此表包含 infopath 表单的批准历史记录,并且系统中提交的每个表单都被赋予一个唯一的 infopath_form_id 以供存储。每个表单的批准者数量没有一致(因为它根据交易的价值而有所不同),但是一个表单总是至少有两个批准者。每个批准任务都作为另一行写入表中,并且只有先前批准的历史记录存储在此表中。

我需要了解的是每种表单类型的批准之间的平均时间。我已经尝试过使用分区以各种方式解决这个问题,但由于每个表单没有固定数量的批准者,我被卡住了。我应该如何解决这个问题?

4

1 回答 1

3

我相信你想要这个:

SELECT infopath_form_id
     , DATEDIFF(Minutes,MIN(event_timestamp),MAX(event_timestamp))/CAST(COUNT(*)-1 AS FLOAT)
FROM Table
GROUP BY infopath_form_id

这将为您提供每个 InfoPath_form_id 的第一个条目和最后一个条目之间的平均分钟数。

使用功能说明:

  1. MIN()返回最早的日期
  2. MAX()返回最新日期
  3. DATEDIFF()返回给定单位的两个日期之间的差(在本例中为分钟)
  4. COUNT()返回每个分组项的行数(即 InfoPath_form_id)

因此,只需将经过的总分钟数除以记录数,即可得出事件之间的平均分钟数。

于 2013-06-25T01:45:38.830 回答