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

SQL特殊条件分组过滤:按指定规则筛选目标数据

需求与解决方案

原始数据

Blockquote

id_docid_expid_actfecha
500200032021-10-23
50120004NULL
502200062021-10-23
503200022021-10-23
50430004NULL
505300062021-10-23
506400032021-10-23
50740004NULL

Blockquote

筛选规则

需筛选出满足以下条件的id_exp对应的所有记录:

  • 该id_exp下存在id_act=4且fecha为NULL的记录
  • 该id_exp下不存在id_act为2或6的记录

预期结果

Blockquote

id_docid_expid_actfecha
506400032021-10-23
50740004NULL

实现方案

以下提供两种常用的SQL实现方式:

方案1:子查询筛选目标id_exp

SELECT *
FROM your_table
WHERE id_exp IN (
    -- 筛选存在id_act=4且fecha为NULL的id_exp
    SELECT id_exp
    FROM your_table
    WHERE id_act = 4 AND fecha IS NULL
    EXCEPT
    -- 排除存在id_act为2或6的id_exp
    SELECT id_exp
    FROM your_table
    WHERE id_act IN (2, 6)
);

方案2:窗口函数统计条件

WITH exp_stats AS (
    SELECT 
        id_exp,
        MAX(CASE WHEN id_act=4 AND fecha IS NULL THEN 1 ELSE 0 END) AS has_valid_act4,
        MAX(CASE WHEN id_act IN (2,6) THEN 1 ELSE 0 END) AS has_invalid_act
    FROM your_table
    GROUP BY id_exp
)
SELECT t.*
FROM your_table t
JOIN exp_stats s ON t.id_exp = s.id_exp
WHERE s.has_valid_act4 = 1 AND s.has_invalid_act = 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:45:36