2017-08-28 56 views
1

我有以下的疑问,其对多少doctor_profiles记录是由周创建生成多个列系列计数

SELECT w.week, COUNT(doctor_profiles.*) AS total 
FROM (SELECT generate_series(min(DATE_TRUNC('week', created_at)), 
          max(DATE_TRUNC('week', created_at)), 
          interval '7 day' 
          ) as week 
     FROM doctor_profiles 
    ) w LEFT JOIN 
    "doctor_profiles" 
    ON DATE_TRUNC('week', created_at) = w.week 
GROUP BY w.week 
ORDER BY w.week; 

我也有一列approved,我想补充的总和计数,每星期。我尝试添加COUNT(doctor_profiles.approved) as approved(布尔型字段),但计数返回的数字与doctor_profiles相同。我如何查询所有批准的doctor_profiles,直到该时间段结束?

回答

1

你可以这样做:

SELECT w.week, COUNT(*) AS total, SUM(approved::int) as approved 
FROM (SELECT generate_series(min(DATE_TRUNC('week', created_at)), 
          max(DATE_TRUNC('week', created_at)), 
          interval '7 day' 
          ) as week 
     FROM doctor_profiles 
    ) w LEFT JOIN 
    "doctor_profiles" dp 
    ON DATE_TRUNC('week', created_at) = w.week 
GROUP BY w.week 
ORDER BY w.week;