我加入了多个视图,以获得每个部门完成任务所需时间的以下输出。输出如下所示:
身份证 | 流程 | 部门 | 秒 |
---|---|---|---|
S911 | 批量 | 销售 | 24268 |
S911 | 批量 | MKTG | 2992 |
S911 | 批量 | 人力资源 | 77 |
S911 | 批量 | 芬 | 14995 |
S911 | 批次 | 数据 | 739 |
S911 | 批次 | ITA | 8988 |
我需要的输出是这样的:
身份证 | 流程 | DEPT_2 | 秒 |
---|---|---|---|
S911 | 批次 | 豁免 | 24345 |
S911 | 批次 | 无豁免 | 24722 |
S911 | 批量 | 其他 | 2992 |
这是否可以通过案例陈述来完成,其中豁免是销售总和,人力资源非豁免是财务数据和产品的总和,并且还有任何其他部门需要汇总为其他部门。
是的,您可以将案例表达式与聚合结合使用。
我不使用 Snowflake,但我相信您可以在 group-by 子句中使用列别名,如下所示,其中
t
是现有查询的派生表或公用表表达式:
select Id, Process,
case
when dept in ('SALES', 'HR') then 'EXEMPT'
when dept in ('FIN', 'DATA', 'ITA') then 'NONEXEMPT'
else 'OTHERS'
end Dept_2,
Sum(Seconds) Seconds
from t
group by Id, Process, Dept_2
order by Dept_2;