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

如何在Snowflake SQL中按多条件筛选单用户单门户记录

Snowflake SQL实现用户门户记录优先级筛选

需求说明

  • 每个门户下的每个用户仅保留1条记录,筛选优先级为:Prod(1)> QA(2)> Stage(3)> Max(4)
  • 若无Prod则选QA,以此类推,确保每个用户每个门户仅保留1条符合优先级的记录
  • 特殊情况:用户ID3543591同时属于AAA和BBB门户,AAA门户选Prod记录,BBB门户因无更高优先级数据,选Max记录

SQL实现方案

WITH ranked_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY user, portal
            ORDER BY 
                CASE source 
                    WHEN 'Prod' THEN 1
                    WHEN 'QA' THEN 2
                    WHEN 'Stage' THEN 3
                    WHEN 'Max' THEN 4
                    ELSE 5
                END ASC
        ) AS rn
    FROM your_original_table_name
)
SELECT 
    Date, user, portal, country, state, source
FROM ranked_records
WHERE rn = 1
ORDER BY portal, user;

代码说明

  • 使用ROW_NUMBER()窗口函数,按user和portal分组(PARTITION BY)
  • 通过CASE语句定义source的优先级排序规则,优先级高的记录排名靠前
  • 筛选出每组中排名为1的记录,即为每个用户每个门户的最优匹配记录

原始表格

Dateuserportalcountrystatesource
12/1/212346232AAACAONProd
1/30/222534657AAACABCQA
3/31/222534657AAAUSTXMax
5/30/223454364AAAUSTXProd
7/29/223543591AAAUSCAProd
9/27/223543591AAAUSCAMax
11/26/223543753AAAUSCAStage
1/25/233546534AAACAONMax
3/26/233543591BBBUSCAMax

预期输出

Dateuserportalcountrystatesource
12/1/212346232AAACAONProd
1/30/222534657AAACABCQA
5/30/223454364AAAUSTXProd
7/29/223543591AAAUSCAProd
11/26/223543753AAAUSCAStage
1/25/233546534AAACAONMax
3/26/233543591BBBUSCAMax

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:55:20