0

SQL 式を次の形式で記述しました。

    select date1,date2,
cast ( Floor ( timestampdiff   (4, char (     timestamp (DATE2)-  
     timestamp (DATE1)))/1440) as char (3))||'days' ||' '  
 || cast ( Floor ( Mod ( timestampdiff (4, char(   timestamp (DATE2)-  
     timestamp (DATE1))) , 1440) / 60) as char (3)) ||'hours' 

そのため、分単位で違いがあり、それを日と時間に変換しています。結果の例は次のとおりです。

DATE1                  DATE2                  DIFFERENCE
2012-01-01 10:00:00    2012-01-03 12:00     2 days 2 hours
2012-01-03 11:00:00    2012-01-03 12:00     0 days 1 hours

これは私が現時点で得ている結果であり、問​​題ありません。しかし今、私は差の平均値で別の結果を得たいと思っています。したがって、最初の行の分数は 3000 です。2 行目の分数は 60 です。平均値は (3000+60)/2=1530 = 1 日 1 時間です。

したがって、この形式の結果が必要です: 平均値: "1 日 1 時間"

私はdb2を使用しています。ありがとうございました

4

1 に答える 1

0

私はdb2を知りませんが、SQLサーバー用にやったので、多くの変更はないと思います

sqlFiddle

必要なのは、集計関数の OVER() 句です

select *, DATEDIFF(hour, date1, date2)/24 as days
,DATEDIFF(hour, date1, date2)%24 as hours
,DATEDIFF(hour, date1, date2) as asdf,
AVG(DATEDIFF(hour, date1, date2)) over() as avgHours
from #temp
于 2013-01-15T09:42:02.717 に答える