2

私は(とりわけ)フィールドdateawarded、beltcolor、およびユーザーID(userid)を持つテーブルを持っています。

ベルトカラーは「varchar」、日付は「日付」、ユーザー ID は int です。

このデータは、学生がさまざまな色の帯 (ブラジリアン柔術) を授与された日付を表しています。

私が確立したいのは、ベルト間の平均時間/特定のベルトで費やされた平均時間です.

紫は青の後に来るので、青に費やされた平均時間を知りたい場合は、次のようにする必要があると思います。

紫帯のユーザー ID ごとに (すべてが紫帯になったわけではありません)、青帯が授与された日付と紫帯が授与された日付を取り、それらの間の時間を計算します。すべての時間を合計し、紫帯に到達したことが判明した人数で割ります。

SQL クエリについて教えてください。

ありがとう!ショーン

4

2 に答える 2

0

最初に、現在のベルトの前のベルトの日付を見つけて (内部クエリを参照)、ベルトの色ごとに現在の日付と前の日付の間の平均日数を数えます。

SQLFiddle デモ

select beltcolor,
       FLOOR(AVG(DATEDIFF(dateawarded,Prev_dateawarded))) as Days_to_reach

from
(

select beltcolor,dateawarded,id,
COALESCE((select MAX(dateawarded) from T
        where id=T1.id 
              and dateawarded<T1.dateawarded) 
  ,dateawarded)
as Prev_dateawarded 
from T as T1
) As T2        

group by beltcolor
于 2013-11-01T12:12:47.450 に答える