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

如何在MySQL中统计指定日期范围内员工去重后的出勤天数?

统计员工去重后的出勤天数

原始数据表

包含date_entry(日期)和emp_id(员工ID)字段,数据如下:

date_entryemp_id
2024-02-01emp-001
2024-02-01emp-001
2024-02-01emp-002
2024-02-01emp-003
2024-02-02emp-001
2024-02-02emp-002
2024-02-02emp-003
2024-02-03emp-001
2024-02-03emp-002
2024-02-03emp-002
2024-02-03emp-003
2024-02-04emp-002
2024-02-04emp-003

需求与预期结果

在2024-02-01至2024-02-04的日期范围内,去除每日的重复出勤记录后,统计每个员工的总出勤天数,预期结果如下:

emp_idday_attend
emp-0013
emp-0024
emp-0034

MySQL 查询语句

方法一:直接使用 COUNT(DISTINCT)

SELECT emp_id, COUNT(DISTINCT date_entry) AS day_attend
FROM your_table_name
WHERE date_entry BETWEEN '2024-02-01' AND '2024-02-04'
GROUP BY emp_id;

方法二:先子查询去重再统计

SELECT emp_id, COUNT(*) AS day_attend
FROM (
    -- 先筛选出唯一的日期+员工组合,去除每日重复记录
    SELECT DISTINCT date_entry, emp_id
    FROM your_table_name
    WHERE date_entry BETWEEN '2024-02-01' AND '2024-02-04'
) AS unique_attendance
GROUP BY emp_id;

说明

  • 两种方法都能实现需求,可任选其一。
  • 请将语句中的your_table_name替换为实际的数据表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:12:55