4

イベントのテーブルがあり、各行には StartDateTime 列があります。イベントのサブセット (ユーザー ID など) をクエリし、連続するイベント間の平均日数を決定する必要があります。

表は基本的にこんな感じです。

TransactionID   TransactionStartDateTime
----------------------------------------
277             2011-11-19 11:00:00.000
278             2011-11-19 11:00:00.000
279             2012-03-20 15:19:46.160
288             2012-03-20 19:23:06.507
289             2012-03-20 19:43:41.980
291             2012-03-20 19:55:17.523

この質問で参照されている次のクエリを適応させようとしました:

select a.TransactionID, b.TransactionID, avg(b.TransactionStartDateTime-a.TransactionStartDateTime) from
     (select *, row_number() over (order by TransactionStartDateTime) rn from Transactions) a
join (select *, row_number() over (order by TransactionStartDateTime) rn from Transactions) b on (a.rn=b.rn-1)
group by
a.TransactionID, b.TransactionID

しかし、元のクエリが DateTimes を予期していなかったため、ここでは運がありません

私の予想される結果は、平均日数を表す 1 桁です(これは、上記のクエリで得られるものではないことがわかりました)。

何か案は?

4

3 に答える 3

0

変更する必要があります

avg(b.TransactionStartDateTime-a.TransactionStartDateTime) 

avg(datediff(DAY,  a.TransactionStartDateTime, b.TransactionStartDateTime))
于 2013-05-16T15:20:48.250 に答える