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

MySQL技术求助:获取工程员工占比最高的deptID

解决MySQL中找出工程员工占比最高部门ID的问题

嘿,作为MySQL新手碰到这种统计类需求很正常,我来帮你搞定这个问题!你的目标是找出工程员工占比最高的deptID,已知deptID 12因为仅1名员工且为工程师(占比100%),所以它是正确结果。

核心思路

我们需要先计算每个部门的:

  • 总员工数
  • 工程师员工数
  • 工程师占比(工程师数/总员工数)
    然后筛选出占比最高的部门ID。

方案1:使用窗口函数(MySQL 8.0及以上版本推荐)

窗口函数可以让我们更简洁地给每个部门的占比排名,直接取排名第一的部门:

SELECT deptID
FROM (
    SELECT 
        deptID,
        -- 按工程师占比降序排名,占比相同的部门会并列第一
        RANK() OVER (ORDER BY SUM(CASE WHEN job_title = '工程师' THEN 1 ELSE 0 END) / COUNT(*) DESC) AS rank_num
    FROM 
        your_table_name  -- 替换成你的实际表名
    GROUP BY 
        deptID
) AS ranked_departments
WHERE rank_num = 1;

方案2:兼容MySQL 5.x版本(无窗口函数)

如果你的MySQL版本不支持窗口函数,用嵌套子查询也能实现:

SELECT deptID
FROM (
    SELECT 
        deptID,
        SUM(CASE WHEN job_title = '工程师' THEN 1 ELSE 0 END) / COUNT(*) AS engineer_ratio
    FROM 
        your_table_name  -- 替换成你的实际表名
    GROUP BY 
        deptID
) AS dept_ratios
WHERE engineer_ratio = (
    -- 先算出所有部门中的最高占比
    SELECT MAX(engineer_ratio)
    FROM (
        SELECT 
            SUM(CASE WHEN job_title = '工程师' THEN 1 ELSE 0 END) / COUNT(*) AS engineer_ratio
        FROM 
            your_table_name
        GROUP BY 
            deptID
    ) AS all_ratios
);

关键注意点

  • 把your_table_name替换成你实际的数据表名称
  • 如果你的职位字段不是job_title,或者工程师的职位值不是'工程师',要对应修改成你表中的实际字段和值
  • 这两个方案都能正确返回deptID 12,因为它的工程师占比是100%,是所有部门中最高的;如果有多个部门占比同为最高,也会全部返回

内容的提问来源于stack exchange,提问作者M.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:57:49