sql - 每周 Postgres 条目,每周

标签 sql postgresql

我想返回每个日历周的每周条目数。我当前的代码:

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/

相关文章:

java - 有关服务器、数据库和 android 的问题

mysql - 通过从车辆读数中减去来计算车辆的里程

sql - 如何将数据过滤到新列中? sql

regex - PL/pgSQL 中的正则表达式替换

postgresql - Rails 3.2 + pg gem : load path issue

javascript - Laravel 连接多个表来获取数据

mysql - 为MySQL手动创建@OneToMany脚本

ruby-on-rails - Rails 4 - 如何在开发中使用 sqlite3 并在生产中使用 PostgreSQL w/Heroku

sql - 在 PostgreSQL 中插入唯一值

mysql - 如何从mysql表中查找元素的前驱和后继?