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

Snowflake SQL:筛选完成步骤1-3但未执行步骤4-5的User_ID

Snowflake SQL 查询:筛选完成Step1-3但未执行Step4-5的用户

需求说明

从给定数据集提取已完成Step 1、Step 2、Step 3,但未执行Step 4、Step 5的用户,预期返回唯一的User_ID:User 1、User 4。

可行解决方案

方法1:分组聚合判断(推荐)

通过分组后统计用户的步骤完成情况,精准筛选符合条件的用户:

SELECT User_ID
FROM your_table_name
GROUP BY User_ID
HAVING 
    -- 确认用户完成了全部3个目标步骤
    COUNT(DISTINCT CASE WHEN Steps IN ('Step 1', 'Step 2', 'Step 3') THEN Steps END) = 3
    -- 确认用户未执行任何后续步骤
    AND COUNT(DISTINCT CASE WHEN Steps IN ('Step 4', 'Step 5') THEN Steps END) = 0;

方法2:EXISTS/NOT EXISTS子查询

通过子查询分别验证用户的步骤完成状态,逻辑更直观:

SELECT DISTINCT u.User_ID
FROM your_table_name u
-- 验证用户完成了Step1、Step2、Step3
WHERE EXISTS (SELECT 1 FROM your_table_name WHERE User_ID = u.User_ID AND Steps = 'Step 1')
  AND EXISTS (SELECT 1 FROM your_table_name WHERE User_ID = u.User_ID AND Steps = 'Step 2')
  AND EXISTS (SELECT 1 FROM your_table_name WHERE User_ID = u.User_ID AND Steps = 'Step 3')
  -- 验证用户未执行Step4或Step5
  AND NOT EXISTS (SELECT 1 FROM your_table_name WHERE User_ID = u.User_ID AND Steps IN ('Step 4', 'Step 5'));

为什么NOT IN没达到预期?

直接用WHERE Steps NOT IN ('Step 4', 'Step 5')只是过滤掉单条步骤记录,无法基于用户维度判断。比如User 2存在Step1-3的记录,这条语句会保留这些行,导致结果错误包含不符合条件的用户。必须从用户整体的步骤集合出发判断,而非单条行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:25:18