sql - PostgreSQL 按月和类型分组数据

标签 sql postgresql pivot crosstab

我有一个像这样的表:

ID    item_type    date
1      apple        2016-12-01       
2      banana       2016-12-01      
3      banana       2016-12-01  

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

month    apple     banana       
dec      1         2

等等...我已经尝试过 date_trunc 进行每月分组,但这似乎是根据日期而不是月份给我计数!而且我完全不确定如何进行多重分组。

最佳答案

使用条件聚合:

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;

关于sql - PostgreSQL 按月和类型分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125773/

相关文章:

Python pandas 数据透视 matplotlib

sql - 有没有办法在 Oracle 数据库中创建自动递增的 Guid 主键?

php - SQL 查询 OR 和 AND

java - 通过 webservice 调用 SQL,但它不起作用

c# - 在 C# 中将 nhibernate 连接到 Postgresql

java - PSQLException : ERROR: relation "TABLE_NAME" does not exist

sql-server - SQL Server PIVOT - 多个聚合

Postgresql 星型模式数据透视查询?

MySQL:从子查询求和值

sql - MS Access - 自动填充后编辑字段只会编辑第一条记录(表单)