我想要得到一个结果表,显示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
我如何格式化我的查询以包括这些额外的时间?
发布于 2013-03-05 05:53:55
我模拟了一个简单的例子:
SELECT q.date_column, count(f.id) FROM
(SELECT
generate_series(min(date_column),max(date_column), '1 day') AS date_column
FROM mytable) AS q
LEFT JOIN mytable AS f
ON q.date_column=f.date_column
GROUP BY q.date_column ORDER BY q.date_column;这将生成所需范围内的所有日期。请确保不执行计数(*),否则将得到1而不是0 http://sqlfiddle.com/#!1/fd4ff/1
发布于 2013-03-05 06:00:45
以下内容适用于postgresql:
SELECT count(*) as count, datecolumn as date FROM myTable group by datecolumn UNION
select 0 as count, i::date as date from generate_series('2013-01-01',
'2013-12-31', '1 day'::interval) i where i not in (select datecolumn from myTable) order by date deschttps://stackoverflow.com/questions/15211408
复制相似问题