2017-08-28 42 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;