我有一个查询,其中我计算每年的行数:

SELECT
  count(*) as activation_count
, extract(year from activated_at) as year
FROM "activations"
WHERE ...
GROUP BY year

但我希望从九月到九月,而不是一月到一月。因此按学年而不是日历年分组。
我可以修改我的查询来执行此操作吗?
一般来说,是否可以按时间范围分组并指定偏移量,例如:extract(year from activated_at offset interval 2 month) as year(这不起作用,只是我想要的想法)

最佳答案

你本质上想要的是将9月之后的所有日期都视为“下一年”,因此以下方法应该有效:

select count(*) as activation_count,
       case
          when extract(month from activated_at) >= 9 then extract(year from activated_at) + 1
          else extract(year from activated_at)
       end as school_year
from activations
group by school_year;

关于postgresql - 在Postgres中按学年分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39634063/

10-15 19:54