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

Snowflake环境下使用SQL按规则对ID关联多行标签分组

Snowflake SQL 实现分组逻辑方案

实现思路

  • 按ID维度聚合,通过条件聚合函数标记每个ID是否存在规则判定需要的四类tag:1、A、2、B
  • 优先级判断:先匹配冲突规则,冲突直接返回NULL,无冲突再匹配分组规则

可直接运行的SQL代码

WITH id_tag_flag AS (
    SELECT 
        ID,
        -- 标记当前ID是否存在对应tag
        BOOLOR_AGG(tag = '1') AS has_tag_1,
        BOOLOR_AGG(tag = 'A') AS has_tag_A,
        BOOLOR_AGG(tag = '2') AS has_tag_2,
        BOOLOR_AGG(tag = 'B') AS has_tag_B
    FROM 替换为你的实际表名
    GROUP BY ID
)
SELECT 
    ID,
    CASE
        -- 优先判定冲突条件
        WHEN (has_tag_1 AND has_tag_B) OR (has_tag_2 AND has_tag_A) THEN NULL
        WHEN has_tag_1 OR has_tag_A THEN 'GROUPA'
        WHEN has_tag_2 OR has_tag_B THEN 'GROUPB'
    END AS "GROUP"
FROM id_tag_flag
ORDER BY ID;

逻辑说明

  • 用Snowflake内置的BOOLOR_AGG聚合函数,只要同一个ID下有任意一行tag符合条件就返回TRUE,相比多次子查询关联性能更优
  • 严格按照规则优先级判断,和你给出的期望输出结果完全一致
  • 其余不参与判定的tag值不会影响聚合结果,符合需求要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:21:03