我想返回每个日历周的每周条目数。我当前的代码:
SELECT COUNT(*) AS count, date_trunc('week', occured_on) AS week
from incidents
GROUP BY date_trunc('week', occured_on)
ORDER BY date_trunc('week', occured_on);
返回:
count | week
-------+---------------------
1 | 2009-09-28 00:00:00
2 | 2009-10-19 00:00:00
6 | 2009-10-26 00:00:00
3 | 2009-11-02 00:00:00
6 | 2009-11-09 00:00:00
22 | 2009-11-16 00:00:00
跳过没有发生事故的一周。我如何获得该周的 0 计数,显示每个日历周的条目总数,而不是每周发生事件?
最佳答案
您可以通过生成周系列然后在聚合之前使用 left join
来完成此操作。下面使用 CTE 生成系列。这不是必需的,但我认为它显示了正在使用的逻辑:
with dates as (
select min(date_trunc('week', occured_on)) as startw,
max(date_trunc('week', occured_on)) as endw
from incidents
),
weeks as (
select generate_series(startw, endw, '7 days') as week
from dates
)
select w.week, count(i.occured_on)
from weeks w left outer join
incidents i
on date_trunc('week', i.occured_on) = w.week
group by w.week;
SQL Fiddle 是 here .
关于sql - 每周 Postgres 条目,每周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114824/