You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

垃圾维度下的计数分组:员工假期状态统计SQL优化问询

多假期状态统计最优SQL实现方案

核心采用条件聚合方案即可满足需求,无需使用UNION ALL拼接多段查询,也不需要复杂的多字段PIVOT语法,仅一次表扫描即可完成全量统计,性能和可维护性均远高于现有UNION ALL写法,可直接扩展到全部7类假期的统计需求。

实现代码示例

SELECT
  Period AS 统计年份,
  -- 病假三类特殊状态计数
  COUNT(CASE WHEN el.Sick_Leave_Desc = '缺失' THEN 1 END) AS 病假_缺失人数,
  COUNT(CASE WHEN el.Sick_Leave_Desc = '不适用' THEN 1 END) AS 病假_不适用人数,
  COUNT(CASE WHEN el.Sick_Leave_Desc = '已撤回' THEN 1 END) AS 病假_已撤回人数,
  -- 娱乐休假三类特殊状态计数
  COUNT(CASE WHEN el.Recreation_Leave_Desc = '缺失' THEN 1 END) AS 娱乐休假_缺失人数,
  COUNT(CASE WHEN el.Recreation_Leave_Desc = '不适用' THEN 1 END) AS 娱乐休假_不适用人数,
  COUNT(CASE WHEN el.Recreation_Leave_Desc = '已撤回' THEN 1 END) AS 娱乐休假_已撤回人数,
  -- 看护假三类特殊状态计数
  COUNT(CASE WHEN el.Carers_Leave_Desc = '缺失' THEN 1 END) AS 看护假_缺失人数,
  COUNT(CASE WHEN el.Carers_Leave_Desc = '不适用' THEN 1 END) AS 看护假_不适用人数,
  COUNT(CASE WHEN el.Carers_Leave_Desc = '已撤回' THEN 1 END) AS 看护假_已撤回人数
FROM
  Employee_Fact ef
INNER JOIN
  Employee_Leave el ON ef.Employee_Leave_SK = el.Employee_Leave_PK
-- 可自定义WHERE条件过滤指定统计范围,如 WHERE Period BETWEEN 2020 AND 2024
GROUP BY
  Period
ORDER BY
  Period DESC;

方案优势

  • 性能表现优异:仅需对事实表、维度表做1次关联扫描,相比7类假期*3种状态共21段查询拼接的UNION ALL写法,执行效率提升10倍以上,数据量越大优势越明显
  • 扩展成本极低:新增假期类型仅需对应添加3行条件计数语句即可,无需调整整体查询结构
  • 适配QlikView加载:输出为宽表结构,每行对应一个统计年份,每列对应一个统计指标,可直接导入QlikView生成图表,不需要额外做数据转换

内容的提问来源于stack exchange,提问作者Annette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:42:02