我有带有列的表:主题,人,published_date。我想创建一个查询,该查询可以帮助我计算每个人每个季度在特定主题上写了多少次。例子:

topic person published_date

'world'  JS   2016-05-05
'world'  JS   2016-05-10
'nature'  AR   2016-12-01

应该返回类似
topic person quarter how_many_times
'world'  JS     2          2
'nature' AR     4          1

我可以按主题和人分组
select topic, person, published_date, count(*) from table group by topic, person, published_date

但是如何将published_date分组为四分之一?

最佳答案

假设published_date是日期类型列,则可以使用extract函数,如下所示:

select
  topic,
  person,
  extract(quarter from published_date) as quarter,
  count(*)
from
  table1
group by
  topic,
  person,
  extract(quarter from published_date)
order by
  extract(quarter from published_date) asc

Sample SQL Fiddle

如果日期可以落入不同的年份,则可能需要将年份添加到选择和分组依据中。

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

10-15 18:46