我有一个具有以下结构的数据库:
日期 | 角色 | 类型 | 期间 |
---|---|---|---|
2022-04-16 | 护士 | 准备食材 | 45 |
2022-04-17 | 护士 | 打扫 | 30 |
2022-04-17 | 志愿者 | 打扫 | 20 |
2022-04-17 | 护士 | 准备食材 | 60 |
注意:我事先不知道“类型”列中的值,因为它们是由用户定义的。此外,可以有多个具有重叠日期、角色和类型的行。
我正在使用一个图表库,希望将数据分组如下:
角色 | 准备食材 | 打扫 |
---|---|---|
护士 | 105 | 30 |
志愿者 | 无效的 | 20 |
到目前为止,我可以使用以下查询对数据进行分组
select
role,
type,
sum(duration) as total_minutes
from work
group by role, type;
角色 | 类型 | 总分钟数 |
---|---|---|
护士 | 打扫 | 45 |
护士 | 准备食材 | 20 |
志愿者 | 打扫 | 15 |
志愿者 | 准备食材 | 43 |
如何“透视”/“转置”数据,以便每一行代表一个角色,其中一列包含每种工作类型的分钟总和?
实际上,我想转置类似于 Pandas DataFrame.pivot_table函数的数据,但只使用 SQL。