2016-04-04 5 views
-3

ユーザーIDと時刻を2つの列に持つテーブルがあります。時間には、行が作成されたときのエントリが含まれます。そのユーザーのために作成された最初のエントリから7日以内に、すべてのユーザーIDに対して作成されたエントリの数を調べたいと思います。最初のエントリから最後の7日間のエントリ数を検索するクエリ

 
+--------+----------+ 
|userid |date  | 
+--------+----------+ 
|1  | 1st Apr | 
|2  | 2nd Apr | 
|1  | 2nd Apr | 
|1  | 2nd Apr | 
|1  | 3rd Apr | 
+--------+----------+ 

我々は第一エントリから2それぞれの日のカウントを印刷する必要があるとします 出力は次のようになります。

 
+--------+----------+ 
|userid |count  | 
+--------+----------+ 
|1  | 3  | //3 entries for 1st and 2nd Apr 
|2  | 1  | //1 entry for 3rd Apr 
+--------+----------+ 

注:私は、単一のクエリでこれを行う必要があります。

+0

これまでのところ、クエリに関して何がありますか? – JaggenSWE

+0

私はこれを始める方法を知らない。これを固定日付から行うのは簡単です。しかし、私が直面している問題は、すべてのユーザーが異なる時間枠を持つということです。 –

+0

好きな場合は、以下の簡単な2ステップのアクションを実行してください。1.まだ実行していない場合は、適切なDDL(および/またはsqlfiddle)を提供して、問題をより容易に複製できるようにします。 2.まだ実行していない場合は、手順1で提供された情報に対応する結果セットを指定してください。 – Strawberry

答えて

0

はこれを試してみてください:

SELECT COUNT([Date]) as count_entries, t.[user_id] 
    FROM User_Time t 
     WHERE [date] 
     BETWEEN 
      (SELECT MIN([date]) 
        FROM User_Time 
         WHERE [user_id] = t.[user_id]) 
     AND 
      (SELECT DATEADD(DAY, 7, MIN([date])) 
       FROM User_Time 
         WHERE [user_id] = t.[user_id]) 
    GROUP BY [user_id] 

申し訳ありませんが、私は現時点ではMySQLを持っていないが、私はあなたがDATE_ADDにDATEADDを変更し、それを適応させることができると思います。

関連する問題