根据单元格值计算平均时间

时间:2015-08-21 05:45:05

标签: sql-server tsql grouping

好的,这很简单,但是我画了一个空白,甚至无法考虑正确的单词组合来搜索答案。

我有一个包含开始和结束时间,任务以及新/重复标志的tsql表。

我想拉开开始和结束之间的平均持续时间,无论是新记录还是重复记录。我将分组任务。

我的结果看起来像Task - NewDurationAverage - RepeatDurationAverage。

提前干杯。

2 个答案:

答案 0 :(得分:1)

您的查询应该是这样的:

SELECT TaskId, NewDurationAverage, RepeatDurationAverage FROM

(SELECT TaskId, DATEDIFF(hh, TaskStart, TaskEnd) as NewDurationAverage 
  FROM Task WHERE IsNew=1 GROUP BY TaskId) NewTasks

LEFT OUTER JOIN

(SELECT TaskId, DATEDIFF(hh, TaskStart, TaskEnd) as RepeatDurationAverage
  FROM Task WHERE IsRepeat=1 GROUP BY TaskId) RepeatTasks

ON NewTasks.TaskId=RepeatTasks.TaskId

答案 1 :(得分:0)

您需要按照以下步骤操作:

  1. 找出startend日期/时间列之间的差异。例如,使用DATEDIFF函数
  2. 对计算值
  3. 执行AVG
  4. 以您想要的任何适当格式转换结果
  5. 根据您的需要,您可以让DATEDIFF以期望的格式(天,分,纳秒等)返回时差。因此,必须决定结果的准确程度(越小越好)。

相关问题