有没有一种简单的方法可以创建 table 来显示按年龄和地理位置分组的每周销售成本?

Is there a simple way to create a table showing weekly Cost-per-Sales grouped by age and geo?

创建的 table 最终需要看起来像这样(周数下的数字是每次销售成本

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

基础数据如下所示Sale_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

Postgres 的星期是 ISO,即一年中的第一周从星期一开始,包含 1 月 4 日。