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

SQL实现查询仅订阅A服务的客户ID并生成单列临时表

仅订阅A类服务的Bucket1客户ID临时表实现方案

核心判定规则

Bucket1客户需要同时满足两个条件,规则不依赖硬编码全量订阅类型,适配实际场景下订阅类型动态增减的需求:

  • 客户存在A类服务的有效订阅记录
  • 客户不存在任何A类之外的其他服务订阅记录

可直接执行的SQL代码

以下写法兼容MySQL、PostgreSQL、SQL Server等绝大多数主流关系型数据库,执行后会直接生成仅存储Bucket1客户ID的单列临时表:

-- 创建Bucket1客户临时表,仅保留ID字段
CREATE TEMPORARY TABLE temp_bucket1 AS
SELECT ID
FROM table1
GROUP BY ID
HAVING
  -- 校验当前客户已订阅A类服务
  SUM(CASE WHEN Subscription = 'A' THEN 1 ELSE 0 END) > 0
  -- 校验当前客户无任何非A类的其他订阅
  AND SUM(CASE WHEN Subscription <> 'A' THEN 1 ELSE 0 END) = 0;

写法优势

  • 不需要提前枚举所有可能的订阅类型,后续新增/调整订阅类型不需要修改SQL逻辑
  • 兼容客户存在多条重复A类订阅记录的场景,不会出现漏判,相比常见的HAVING COUNT(*) = 1 AND Subscription = 'A'写法鲁棒性更强,无需提前对重复订阅数据做去重处理

样例数据校验

针对给出的测试数据执行上述代码,返回结果完全符合预期:

  • 102:仅订阅A类服务,被保留在临时表中
  • 101:同时订阅A/B/C三类服务,存在非A类订阅被过滤
  • 103:同时订阅A/B两类服务,存在非A类订阅被过滤
  • 104:仅订阅D类服务,无A类订阅被过滤

如果需要获取所有订阅了A类服务的Bucket2客户集合,只需要删除第二个HAVING判断条件即可,返回结果为101、102、103。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:36:27