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

技术问询:如何获取早于8:30、8:30-9:00及晚于9:00的员工打卡数据

统计指定部门员工分时段打卡情况

针对你需要获取指定部门(DP_CODE='C019')2018年3月员工早于8:30、8:30-9:00以及晚于9:00的打卡数据需求,我整理并优化了对应的SQL查询代码——原代码在时间判断和聚合写法上存在一些语法问题,下面是修正后的版本:

SELECT 
    emp.emc_name,
    SUM(CASE 
        WHEN CAST(s.SAD_DATE AS TIMESTAMP) < TO_TIMESTAMP('08:30', 'HH24:MI') 
        THEN 1 ELSE 0 END) AS "Before 8:30am",
    SUM(CASE 
        WHEN CAST(s.SAD_DATE AS TIMESTAMP) BETWEEN TO_TIMESTAMP('08:30', 'HH24:MI') 
        AND TO_TIMESTAMP('09:00', 'HH24:MI') 
        THEN 1 ELSE 0 END) AS "8:30am To 9am",
    SUM(CASE 
        WHEN CAST(s.SAD_DATE AS TIMESTAMP) > TO_TIMESTAMP('09:00', 'HH24:MI') 
        THEN 1 ELSE 0 END) AS "After 9am"
FROM Shift s
JOIN emply emp ON s.EM_CODE = emp.EM_CODE
WHERE emp.DP_CODE = 'C019'
    AND s.SAC_INOUT = 1
    AND s.SAD_DATE BETWEEN '01-mar-2018' AND '31-mar-2018'
GROUP BY emp.emc_name
ORDER BY emp.emc_name;

代码说明:

  • 用CASE WHEN搭配SUM实现条件聚合,精准统计每个员工在不同时段的打卡次数
  • 修正了时间判断逻辑:直接通过时间戳完整比较来区分8:30和9:00的分界点,避免原代码仅提取小时数导致的判断误差
  • 使用标准的JOIN语法替代旧的逗号连接表写法,让SQL结构更清晰易读
  • 调整了GROUP BY与ORDER BY的顺序,符合SQL语法规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:57:47