10

次のクエリで avg(time(4)) を行うにはどうすればよいですか。

  select top 10 avg(e.Duration) from TimeTable e

次のエラーが表示されます。

avg 演算子のオペランド データ型 time は無効です。

期間は次のような time(4) 型です。

Duration
-------------
00:00:10.0000
4

4 に答える 4

17

を使用DateDiff( ms, '00:00:00', e.Duration )して、時間を整数のミリ秒に変換できます。それを集計に使用してから、結果を元に戻しCast( DateAdd( ms, 1234, '00:00:00' ) as Time )ます。

于 2012-08-03T01:42:56.583 に答える
9

HABOの回答を改善する:

select top 10
Cast(DateAdd( ms,avg(DateDiff( ms, '00:00:00', e.Duration)), '00:00:00' )  as time) as 'avg duration' 
from TimeTable e
于 2013-01-30T14:39:43.753 に答える
1

timeメソッドの無効なタイプのようですavg()。有効なデータ型のリストについては、 こちらを参照してください。

また、これには値のグループが必要なようです。これtop 10により、現在のクエリでの必要性がなくなります。

于 2012-08-03T00:57:36.243 に答える