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

使用CASE WHEN聚合分组:员工周工时统计查询问题

问题解决:统计每周不同地点工时达标员工数

你的查询问题出在直接对每日的工时记录进行判断统计,但需求是统计员工每周的总工时是否符合条件,而非每日记录的数量。源表是每日薪资数据,需要先按员工、周、地点汇总出每个员工每周的总工时,再基于这个汇总结果统计符合条件的员工ID数量。

正确的SQL查询语句

-- 第一步:先计算每个员工每周在对应地点的总工时
WITH weekly_hours AS (
    SELECT
        [EMPLOYEE_ID],
        [WEEKENDING],
        [LOCATION],
        SUM([PAID_HOURS]) AS total_weekly_hours
    FROM mydb.payroll
    GROUP BY [EMPLOYEE_ID], [WEEKENDING], [LOCATION]
)
-- 第二步:基于总工时统计符合条件的员工数量
SELECT
    [WEEKENDING],
    [LOCATION],
    SUM(CASE WHEN total_weekly_hours > 30 THEN 1 ELSE 0 END) AS [COUNT_OVER_30],
    SUM(CASE WHEN total_weekly_hours < 20 THEN 1 ELSE 0 END) AS [COUNT_UNDER_20]
FROM weekly_hours
GROUP BY [WEEKENDING], [LOCATION]

逻辑说明

  1. 用CTE(weekly_hours)先聚合每个员工在每周、对应地点的总工时,确保我们判断的是员工整周的工时情况。
  2. 再对聚合后的结果按周和地点分组,统计总工时超过30小时和不足20小时的员工数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:22:34