sql - Postgres 查询代表的年度销售报告。按月分组

标签 sql postgresql

我想按销售代表创建一个年度销售报告表,显示所有十二个月。我拥有的数据或多或少类似于此示例:

id | rep | date      | price
----------------------------
1    1     2017-01-01  20
2    1     2017-01-20  44
3    2     2017-02-18  13
4    2     2017-03-08  12
5    2     2017-04-01  88
6    2     2017-09-05  67
7    3     2017-01-31  10
8    3     2017-06-01  74

我需要的结果是这样的:

Rep Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
----------------------------------------------------
1   64  0   0   0   0   0   0   0   0   0   0   0
2   0   13  12  88  0   0   0   0   67  0   0   0
3   10  0   0   0   0   74  0   0   0   0   0   0

编写此查询的最有效方法是什么?

最佳答案

一种方法:

select rep,
sum(case when extract('month' from date) = 1 then price else 0 end ) as Jan,
sum(case when extract('month' from date) = 2 then price else 0 end ) as Feb 
-- another months here
from t
group by rep

关于sql - Postgres 查询代表的年度销售报告。按月分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589160/

相关文章:

ruby-on-rails - PG::ConnectionBad Error when trying to run rake db:migrate 在创建模型后,使用 postgresql

python - 输入几何体具有未知 (0) SRID

sql - 在 postgresql 中编辑 jsonb 数组的字段

mysql - 根据同一个表中的值从表中获取值

mysql - 无法在 Lag() 中使用 Count(*)

sql - 此处不允许使用分组功能

java - OneToMany 与 Java 的最佳实践

c# - 多次读取 IDataReader 时出错

Postgresql 9.3 监听 channel

java - batchStore不加载生成的 key