过去几周的Postgresql计数

过去几周的Postgresql计数,postgresql,aggregate,Postgresql,Aggregate,我已经创建了上面的查询,它显示了每个团队在给定的一周内完成了多少贷款。第0周是过去的七天 理想情况下,我想要一个表格,显示每个团队在过去8周内完成了多少贷款,按周分组。输出如下所示: 有什么好办法吗?下面的查询怎么样 select id, wk0_count from teams left join (select team_id, count(team_id) as wk0_count from ( select created_at, team_id, tru

我已经创建了上面的查询,它显示了每个团队在给定的一周内完成了多少贷款。第0周是过去的七天

理想情况下,我想要一个表格,显示每个团队在过去8周内完成了多少贷款,按周分组。输出如下所示:


有什么好办法吗?

下面的查询怎么样

select id, wk0_count
from teams
left join
    (select team_id, count(team_id) as wk0_count
    from (
        select created_at, team_id, trunc(EXTRACT(EPOCH FROM age(CURRENT_TIMESTAMP,created_at)) / 604800) as wk_offset
        from loan_files
        where loan_type <> 2
        order by created_at DESC) as t1
    where wk_offset = 0
    group by team_id) as t_wk0
on teams.id = t_wk0.team_id
值得注意的变化是:

子查询中的ORDERBY子句毫无意义; 在最里面的子查询中创建的_从未使用过; wk_偏移测试在WHERE子句上移动,而不是分两个不同的步骤进行; 不需要最外层的子查询。
侧位从9.3开始。在以前的版本中,将week表达式移动到筛选条件。

Mysql或postgresql?@GurV在meFabian看来像Postgres-那么我会在输出中每周多次执行此查询,然后加入这些查询吗?谢谢-我会深入研究聚合筛选器synatx。可能这就是我出现此错误的原因:错误:运算符不存在:日期/整数行12:选择当前日期-lf.created_at::date/7 as week…^提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。@LancePoole修复了有关查询的快速问题。在teams表中,有一些teams.id未显示在此查询中。为什么呢?我试过左键连接,但不起作用。理想情况下,结果将列出teams中的每个teams.id。@LancePoole要使左连接起作用,必须将where条件移动到连接条件。我相应地编辑了查询。
SELECT team_id AS id, count(team_id) AS wk0_count
FROM teams LEFT JOIN loan_files ON teams.id = team_id
WHERE loan_type <> 2
  AND trunc(EXTRACT(epoch FROM age(CURRENT_TIMESTAMP, created_at)) / 604800) = 0
GROUP BY team_id
select
    t.id,
    count(week = 0 or null) as wk0,
    count(week = 1 or null) as wk1,
    count(week = 2 or null) as wk2,
    count(week = 3 or null) as wk3
from
    teams t
    left join
    loan_files lf on lf.team_id = t.id and loan_type <> 2
    cross join lateral
    (select (current_date - created_at::date) / 7 as week) w
group by 1
count(*) filter (where week = 0) as wk0,