2017-06-14 40 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; 
相关问题