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

Oracle SQL如何按STUDENT_ID分组并过滤存在空STIP_ID的学生

Oracle SQL 聚合函数实现方案

核心思路

利用COUNT()聚合函数的特性:COUNT(指定字段)统计时会自动忽略该字段为NULL/空值的行,当分组内所有行的STIP_ID都非空时,COUNT(STIP_ID)的统计结果会等于分组的总行数COUNT(*)。

实现代码

SELECT STUDENT_ID, FULL_NAME
FROM 你的表名
GROUP BY STUDENT_ID, FULL_NAME
HAVING COUNT(STIP_ID) = COUNT(*);

逻辑说明

  • 分组时同时指定STUDENT_ID和FULL_NAME,二者为一一对应关系,满足分组后直接返回这两个字段的要求
  • HAVING子句作为分组后过滤条件:只要学生存在任意一学期STIP_ID为空,COUNT(STIP_ID)的统计值就会小于分组总行数COUNT(*),对应分组就会被排除

可选实现(逻辑更直观)

如果需要更明确的空值判断逻辑,也可以结合CASE WHEN和MAX聚合函数实现:

SELECT STUDENT_ID, FULL_NAME
FROM 你的表名
GROUP BY STUDENT_ID, FULL_NAME
HAVING MAX(CASE WHEN STIP_ID IS NULL THEN 1 ELSE 0 END) = 0;

该方案逻辑为:只要分组内存在任意一行STIP_ID为空,MAX()统计结果就为1,不符合等于0的过滤条件,对应分组就会被排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:01