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

如何从分组中选取任务量最少的员工(含并列场景处理)

任务分配:处理同组员工任务量并列的升序选取方案

针对业务需求——新任务分配给对应组内已分配任务量最少的员工,当组内多个员工任务量相同时通过升序排序选取,可通过以下SQL逻辑实现:

核心思路

  1. 统计每个组内各员工的已分配任务数量;
  2. 在组内对员工排序:优先按任务数升序(确保任务最少的排在最前),任务数相同时按指定字段(如员工姓名)升序,锁定唯一人选;
  3. 筛选每个组内排序后的首位员工,即为新任务的分配对象。

具体SQL实现

第一步:统计员工任务量

先计算每个组中每个员工的已分配任务数:

SELECT 
    `Group`,
    Employee,
    COUNT(Task) AS TaskCount
FROM 
    task_table
GROUP BY 
    `Group`,
    Employee

第二步:排序并选取目标员工

借助窗口函数ROW_NUMBER()完成组内排序与筛选:

WITH EmployeeTaskCounts AS (
    SELECT 
        `Group`,
        Employee,
        COUNT(Task) AS TaskCount
    FROM 
        task_table
    GROUP BY 
        `Group`,
        Employee
)
SELECT 
    `Group`,
    Employee AS AssignedEmployee
FROM (
    SELECT 
        `Group`,
        Employee,
        ROW_NUMBER() OVER (
            PARTITION BY `Group` 
            ORDER BY TaskCount ASC, Employee ASC
        ) AS rn
    FROM 
        EmployeeTaskCounts
) ranked_employees
WHERE rn = 1;

逻辑说明

  • 针对C组的情况,James和Emma任务数均为2,ORDER BY TaskCount ASC, Employee ASC会先按任务数排序,任务数相同时按员工姓名字典序升序排列,Emma的姓名字典序早于James,因此会被选为C组新任务的分配对象;
  • 若需调整并列时的排序依据(比如按员工ID升序),只需修改ORDER BY中的第二个字段即可,例如改为ORDER BY TaskCount ASC, EmployeeID ASC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:25:25