10

3 つのフィールドがあるとします。username, start_date, end_date

ユーザーは複数のレコードを開始および停止します。たとえば、以下の bob は 2 つのレコードを開始および停止しました。

bob   1/2/13 11:00  1/2/13 13:00
jack  1/2/13 15:00  1/2/13 18:00
bob   2/2/13 14:00  1/2/13 19:00

各ユーザー (つまり、各行だけでなく、ユーザーごとのグループ) の平均所要時間 (つまり、開始と終了の差) を時間単位で知る必要があります。

差分、平均、グループ化の方法がよくわかりません。何か助けはありますか?

4

2 に答える 2

17

差分に必要な粒度を指定しません。これは数日でそれを行います:

select username, avg(end_date - start_date) as avg_days
from mytable
group by username

秒単位の差が必要な場合は、次を使用しますdatediff()

select username, avg(datediff(ss, start_date, end_date)) as avg_seconds
...

datediff は、最初のパラメーター (ss、mi、hh、dd、wk、mm、または yy のいずれか) を変更することにより、年までの任意の時間単位で差分を測定できます。

于 2013-02-15T13:27:10.510 に答える
5
SELECT [username], AVG(TIMESTAMPDIFF(HOUR, start_date, end_date))
FROM [table]
GROUP BY [username]
于 2013-02-15T13:28:02.257 に答える