我有以下查询:
SELECT created_at::DATE, count (*)
FROM messages
WHERE city = 'los angeles'
GROUP BY created_at::DATE
效果很好。挑战在于,如果给定日期没有消息,则它不会返回该日期的记录。如果在给定日期和今天之间所有天没有消息,您如何使上述查询返回日期和 0?
在 PostgreSQL 8.3 中工作。
谢谢!
最佳答案
听起来您需要一个包含您感兴趣的所有日期的表格,因为它可能包含不在您的消息表格中的日期。如果您拥有或构建了此表,然后左连接与消息表并计算该表的列——它将返回 0,其中没有任何内容与连接匹配。
select d.created_at, count(m.messageId)
from possibleDates d
left join messages m
on d.created_at = m.created_at
group by d.created_at
关于sql - 如何从 PostgreSQL 数据库中选择数据,但如果给定日期没有数据,则返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6713408/