PostgreSQL 按月份和类型对数据进行分组

Shi*_*isa 1 sql postgresql pivot crosstab

我有一张桌子,它是这样的:

ID    item_type    date
1      apple        2016-12-01       
2      banana       2016-12-01      
3      banana       2016-12-01  
Run Code Online (Sandbox Code Playgroud)

等等。我需要做的是获得一个输出表,其中月份为行,item_type 为列,以及每个组合的条目数,使其看起来像

month    apple     banana       
dec      1         2
Run Code Online (Sandbox Code Playgroud)

等等......我已经尝试date_trunc过按月分组,但这似乎是根据日期而不是月份来计算的!而且我根本不知道如何进行多重分组。

Gor*_*off 5

使用条件聚合:

select date_trunc('month', date) as mon,
       sum((item_type = apple)::int) as apple,
       sum((item_type = banana)::int) as banana
from t
group by mon
order by mon;
Run Code Online (Sandbox Code Playgroud)