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

如何用MySQL查询员工数最多/最少的分组?

筛选员工数最多和最少的分组SQL方案

方法一:子查询匹配最大/最小计数(兼容多数数据库)

先统计每个分组的员工数,再通过子查询找出全局的最大和最小员工数,最后筛选出计数等于这两个值的分组:

SELECT `groupName`, emp_count
FROM (
    SELECT `groupName`, COUNT(*) AS emp_count
    FROM Table1
    WHERE ROLE = 'employee'
    GROUP BY `groupName`
) AS group_counts
WHERE emp_count = (
    SELECT MAX(emp_count) 
    FROM (SELECT COUNT(*) AS emp_count FROM Table1 WHERE ROLE='employee' GROUP BY `groupName`) AS counts
)
OR emp_count = (
    SELECT MIN(emp_count) 
    FROM (SELECT COUNT(*) AS emp_count FROM Table1 WHERE ROLE='employee' GROUP BY `groupName`) AS counts
)
ORDER BY emp_count DESC;

方法二:窗口函数简化逻辑(支持窗口函数的数据库,如MySQL 8+、PostgreSQL等)

利用窗口函数直接计算全局的最大和最小员工数,一步筛选目标分组,代码更简洁高效:

SELECT `groupName`, emp_count
FROM (
    SELECT 
        `groupName`, 
        COUNT(*) AS emp_count,
        MAX(COUNT(*)) OVER () AS max_emp,
        MIN(COUNT(*)) OVER () AS min_emp
    FROM Table1
    WHERE ROLE = 'employee'
    GROUP BY `groupName`
) AS group_counts
WHERE emp_count IN (max_emp, min_emp)
ORDER BY emp_count DESC;

两种方法都能实现需求:如果有多个分组员工数同为最大值或最小值,都会被一并返回(比如示例中的2b、3c两个分组都会出现在结果里)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:47:15