sql - 如何从 PostgreSQL 数据库中选择数据,但如果给定日期没有数据,则返回 0?

标签 sql postgresql select date rails-postgresql

我有以下查询:

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/

相关文章:

mysql - 将 NULL 值插入 postgreSQL 中的 TIMESTAMP 字段

mysql - 改善缓慢的 MySQL 选择查询或改善数据库结构?

mysql - 如何获得最大匹配输出

mysql - 仅选择具有链接记录的记录

mysql - 成对计数 : SQL

sql - 从函数返回查询?

mysql - 一个简单的选择返回一个空表

sql - 仅返回 GROUPING SETS 查询中每个组的前 n 个结果

django - 如何在 Django 应用程序中访问 PostgreSQL 数据库

postgresql - 验证两个postgresql数据库之间的数据一致性