Sql 是否有一种简单的方法来创建一个表格,显示按年龄和地理位置分组的每周销售成本?

Sql 是否有一种简单的方法来创建一个表格,显示按年龄和地理位置分组的每周销售成本?,sql,postgresql,pivot,average,date-arithmetic,Sql,Postgresql,Pivot,Average,Date Arithmetic,创建的表最终需要如下所示(其中周下的数字是每笔销售的成本) |Age Group | Geo | Week 38 | Week 39 | Week 40 | | 1 | A | 13 | 16 | 19 | | 2 | A | 20 | 23 | 28 | | 1 | B | 7 | 9 | 6 | 基础数据看起来像是销售Id、成本、日期

创建的表最终需要如下所示(其中周下的数字是每笔销售的成本)

|Age Group | Geo  | Week 38 | Week 39 | Week 40 |
|      1   |  A   | 13      | 16      | 19      |
|      2   |  A   | 20      | 23      | 28      |
|      1   |  B   | 7       | 9       | 6       |

基础数据看起来像是销售Id、成本、日期、年龄组。您似乎在寻找条件聚合。这有助于将数据集中在固定的周列表中:

select age_group, geo,
    avg(cost) filter(where extract(week from date) = 38) as week_38,
    avg(cost) filter(where extract(week from date) = 39) as week_39,
    avg(cost) filter(where extract(week from date) = 40) as week_40
from mytable
group by age_group, geo
博士后的周数是ISO,即一年中的第一周从周一开始,包含1月4日