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

如何通过SQL查询全月缺勤人员及其对应薪资信息

整月全缺勤员工及对应薪资查询实现方案

前提表结构约定

默认两张业务表包含以下核心字段,可根据实际表结构调整:

  • SALARY_MONTH(月度薪资表):emp_id(员工唯一ID)、salary_month(薪资归属月份,格式示例2024-05)、salary(月度薪资额),可按需扩展员工姓名、部门等字段
  • absent(缺勤记录表):emp_id(员工唯一ID)、absent_date(缺勤日期,日期类型)、absent_code(缺勤类型编码)

实现逻辑说明

  • 针对同员工同天可能存在多条不同编码缺勤记录的问题,统计缺勤天数时对缺勤日期去重,避免计数错误
  • 匹配月度薪资表的对应周期数据,保证薪资和缺勤记录属于同一核算月份
  • 筛选出员工当月缺勤天数等于当月总天数的记录,即为整月全缺勤的人员

具体SQL实现(MySQL语法为例)

-- 设定要查询的目标核算月份,可按需修改
SET @target_month = '2024-05';
-- 计算目标月份的总自然天数
SET @month_total_days = DAY(LAST_DAY(@target_month));

SELECT 
  s.emp_id,
  s.salary_month,
  s.salary
FROM SALARY_MONTH s
INNER JOIN (
  -- 统计每个员工当月的去重缺勤天数
  SELECT 
    emp_id,
    DATE_FORMAT(absent_date, '%Y-%m') AS absent_month,
    COUNT(DISTINCT absent_date) AS absent_days
  FROM absent
  WHERE DATE_FORMAT(absent_date, '%Y-%m') = @target_month
  GROUP BY emp_id, DATE_FORMAT(absent_date, '%Y-%m')
) a ON s.emp_id = a.emp_id AND s.salary_month = a.absent_month
WHERE a.absent_days = @month_total_days;

场景调整说明

  • 若仅需统计工作日全缺勤,可提前维护一张工作日历表,关联后统计当月工作日总数,将过滤条件替换为缺勤天数等于当月工作日总数即可
  • 若两张表的月份字段存储格式为每月第一天的日期类型(如2024-05-01),调整对应日期格式化函数匹配字段格式即可
  • 若存在员工当月薪资表无记录的场景,将INNER JOIN改为LEFT JOIN并补充薪资字段非空过滤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:39:03