2012-01-30 2 views
2

users 테이블에 생성되는 레코드와 사용자가 subscriptions 테이블에 처음으로 구매할 때의 관계를 이해하고 싶습니다. 두 표 모두 created_at을 필드로 사용하고 users.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