我有一个查询,其中我计算每年的行数:
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/