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

SQL场景下如何根据用户拥有的水果类型对PartyID分组

根据用户拥有的水果类型分组的SQL解决方案

核心实现代码

SELECT 
    PartyID,
    Name,
    CASE
        WHEN HasApple = 1 AND HasOrange = 1 THEN '同时拥有苹果和橙子'
        WHEN HasApple = 1 THEN '仅苹果'
        WHEN HasOrange = 1 THEN '仅橙子'
        ELSE '无水果'
    END AS FruitGroup
FROM (
    SELECT 
        PartyID,
        Name,
        -- 标记用户是否拥有苹果
        MAX(CASE WHEN Description = 'Apple' THEN 1 ELSE 0 END) AS HasApple,
        -- 标记用户是否拥有橙子
        MAX(CASE WHEN Description = 'Orange' THEN 1 ELSE 0 END) AS HasOrange
    FROM Party
    GROUP BY PartyID, Name
) AS UserFruits

实现思路

  1. 子查询聚合:按PartyID和Name分组,用条件聚合MAX(CASE...)分别标记每个用户是否拥有苹果和橙子(存在则为1,否则为0)。
  2. 外层分组判断:通过CASE语句根据HasApple和HasOrange的组合值,将用户归入对应的分组:
    • 两者都为1 → 同时拥有苹果和橙子
    • 仅HasApple为1 → 仅苹果
    • 仅HasOrange为1 → 仅橙子

验证结果

执行后会得到符合需求的分组:

  • John(123)、Jack(789)→ 同时拥有苹果和橙子
  • Jane(456)→ 仅橙子
  • Jill(012)→ 仅苹果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:43:18