2017-06-14 33 views
0

當一週內沒有找到數據時,SQL將返回1.如何使它返回0?SQL按周生成系列,如果沒有找到,則返回0

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

你有外連接,所以'COUNT(*)'來'計數(評論。*)'應做的伎倆 –

回答

0

你有外連接,因此更改count(*)count(reviews.*)應該做的,試試:

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