有没有一种简单的方法可以创建 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 日。
创建的 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 日。