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

Oracle基于行子集条件聚合:求各公司25岁以下最大年龄及总人数

解决方案:Oracle中按行子集计算最大值并统计总人数

针对你的需求,我们可以结合Oracle的聚合函数和条件判断来实现——既统计每个公司的总人数,又只针对25岁以下人员的子集计算最大年龄。

实现SQL语句

SELECT 
    COMPANY,
    COUNT(*) AS 总人数,
    MAX(CASE WHEN AGE < 25 THEN AGE END) AS 25岁以下最大年龄
FROM 
    你的表名
GROUP BY 
    COMPANY
ORDER BY 
    COMPANY;

语句解释

  • COUNT(*):直接统计每个分组(公司)下的所有行数,也就是该公司的总人数。
  • MAX(CASE WHEN AGE < 25 THEN AGE END):通过CASE语句筛选出年龄小于25的行,只对这些行的AGE字段取最大值;如果某个公司没有25岁以下的员工,这个字段会返回NULL,符合实际逻辑。
  • GROUP BY COMPANY:按公司分组,确保每个公司只返回一行统计结果。

针对示例数据的执行结果

按照你给出的示例数据,执行上述SQL后会得到如下结果:

COMPANY总人数25岁以下最大年龄
A222
B121
C324
D1NULL

可选优化:替换NULL值

如果希望把没有25岁以下员工的公司对应的最大值显示为0(或其他默认值),可以用NVL函数包装最大值计算:

SELECT 
    COMPANY,
    COUNT(*) AS 总人数,
    NVL(MAX(CASE WHEN AGE < 25 THEN AGE END), 0) AS 25岁以下最大年龄
FROM 
    你的表名
GROUP BY 
    COMPANY
ORDER BY 
    COMPANY;

这样公司D的25岁以下最大年龄就会显示为0,而不是NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:21:44