类似的问题已经有了,但我不明白如何将我的情况与过去的例子联系起来。
我需要显示一段时间的数据。而且,如果值为零,那么这个数据也必须存在。我知道这可以通过LEFT JOIN来完成。但是如何做还不清楚。
现在我的问题是这样的:
SELECT date_trunc('day', to_timestamp(created_at)) as "Interval", COUNT(*) as "Number" FROM public.surmise
where
GROUP BY 1 ORDER BY 1
我得到:
January 1 - 10
January 3 - 20
January 10 - 5
我希望:
January 1 - 10
January 2 - 0
January 3 - 20
January 4 - 0
... 'other days with 0'
January 10 - 5
提前感谢您的帮助
1条答案
按热度按时间eqoofvh91#
您需要一个没有间隔的所有日期的列表(
generate_series
),然后从该列表left join
中选择您的表,以便所有日期都包含在结果中。请注意,结果是正确的,因为COUNT(s.created_at)
不计算空值。