1

次のようなクエリがあります。

最初のクエリ:

SELECT* FROM Transaction_tbl WHERE Locid=6 AND Paydate is not null

2 番目のクエリ:

SELECT SUM(DATEDIFF(MI,t.Paydate,t.DelDate)) as Totalv , 
    AVG( CONVERT(NUMERIC(18,2), DATEDIFF(MI,t.Paydate,t.DelDate))) as Average
FROM Transaction_tbl t 
WHERE Locid=6

私の出力:

Totalv | Average
-------+-----------
33169  | 1745.736842

しかし、私は入りたいのですが、hh:mm:ss 形式で平均を取得する方法はありますかaverage?hour:minutes:second

4

1 に答える 1

0

最も簡単なことではありませんが、ロケット科学ではありません。

私がしたことは、サブクエリで平均秒を取得し、次に秒を 3600 で割り、時間を取得することでした 1)。

分 2) を取得するには、平均秒数から、その時間に含まれるすべての秒数を引きます。

次に、3) 残りの秒を取得するために、時間に含まれるすべての秒と分に含まれるすべての秒を合計し、平均秒からそれらの秒を差し引いて、残りの秒を取得します。

数字をテキストに連結する場合、キャストが必要です

select 
cast(AvgSec/3600 as varchar(2)) +':'                       --1) gets hours
+cast(AvgSec/60 -((AvgSec/3600) * 60) as varchar(2))  +':' --2) gets minutes
+cast((AvgSec - ((((AvgSec/3600) *60)*60)                  --3) leftover seconds 
+ ((AvgSec/60 -((AvgSec/3600) * 60))*60))) as varchar(2)) as 'hh:mm:ss' 
from (
    select avg(datediff(s,date1,date2)) as AvgSec
    from _dates
)as sub
于 2013-07-22T12:37:49.260 に答える