【发布时间】:2013-02-19 02:56:29
【问题描述】:
我想得到一个结果表,显示 X 有条目的日期
SELECT count(*),
date_column
FROM myTable
WHERE X
GROUP BY date_column
ORDER BY date_column DESC
这可行,但我还想查看 X 没有条目的日期,在我的用例中,这将是中间日期。
因此,例如 2013-3-10 将出现在结果中,但下一个日期将是 2013-3-5,但我需要我的结果还返回 count = 0 的天数,所以在这种情况下, 6、7、8、9号
我将如何格式化我的查询以包含这些额外的时间?
【问题讨论】:
-
什么数据库?您必须使用生成的日期表离开联接。例如 PG 为此具有 generate_series 但其他数据库可能需要其他黑客攻击。
-
SQL 不创建数据。因此,您要么必须拥有所有可能日期的来源并将它们加入其中,要么您只需要在显示结果时构建它,以便 NULL 日期计数为 0。这种技术可以追溯到存储昂贵的日子,因此您没有存储 0 数据。缺少数据就足够了,如果需要,您可以让显示工具显示 0。
-
@xQbert 对,我正在使用可以将数据作为数组检索的 ORM,我可以在那里对其进行操作。想知道是否有办法在查询中做到这一点
-
@JakubKania 我正在使用 postgres,您能否详细说明
generate_series方法以及如何将其加入到我的其他查询中
标签: sql postgresql timestamp epoch