2012-01-30 21 views
2

テーブルで作成されるレコードとsubscriptionsテーブルでのユーザーの最初の購入との関係を理解し​​たいと思います。どちらのテーブルもフィールドとしてcreated_atusers.id=subscriptions.user_idです。SQLの結合時の時間差

ユーザーの数と、参加した日から最初に購入した日までの時間(日数)をグループ化して出力したいと思います。

days, users 
0, 45 
1, 63 
2, 14 
3, 7 

答えて

3
SELECT 
     days 
    , COUNT(*) AS users 
FROM 
     (SELECT 
       DATEDIFF(MIN(s.created_at), u.created_at) AS days 
     FROM 
       users AS u 
      JOIN 
       subscriptions AS s 
      ON 
       s.user_id = u.id 
     GROUP BY 
       u.id 
    ) AS grp 
GROUP BY 
     days