Snowflake中使用CASE语句实现部门耗时分组求和与重命名
可行,以下是具体实现方案
完全可以通过CASE语句结合聚合函数实现需求,核心是用CASE对部门进行分类,再按分类汇总耗时总和。
假设你的数据集包含两个核心字段:dept(部门名称)和task_hours(任务耗时),可以参考以下SQL语句:
SELECT -- 用CASE语句将部门映射到指定分类 CASE WHEN dept IN ('SALES', 'HR') THEN 'EXEMPT' WHEN dept IN ('FIN', 'DATA', 'ITA') THEN 'NONEXEMPT' ELSE 'OTHERS' END AS category, -- 计算每个分类的总耗时 SUM(task_hours) AS total_task_hours FROM your_combined_dataset -- 替换为你的关联后数据集名称 GROUP BY -- 按分类分组,确保同一分类的耗时被汇总 CASE WHEN dept IN ('SALES', 'HR') THEN 'EXEMPT' WHEN dept IN ('FIN', 'DATA', 'ITA') THEN 'NONEXEMPT' ELSE 'OTHERS' END;
补充说明
- 如果你的数据库支持GROUP BY别名(比如MySQL、PostgreSQL),可以简化GROUP BY部分为
GROUP BY category,代码更简洁。 - 若需要同时保留原部门信息和分类,可调整语句为按部门和分类分组,示例如下:
SELECT dept, CASE WHEN dept IN ('SALES', 'HR') THEN 'EXEMPT' WHEN dept IN ('FIN', 'DATA', 'ITA') THEN 'NONEXEMPT' ELSE 'OTHERS' END AS category, SUM(task_hours) AS total_task_hours FROM your_combined_dataset GROUP BY dept, category;
内容的提问来源于stack exchange,提问作者moikoi
相关产品推荐
相关产品推荐

