网站首页 > 文章精选 正文
引言:
找出表中所有 custid,其中每个custid的 market 值只包含 '1' 和 '2',并且这两个值都必须出现。若custid 的 market 字段中有其他值,该custid就不会被返回。
SELECT custid
FROM table
GROUP BY custid
HAVING SUM(CASE WHEN market IN ('1', '2') THEN 1 ELSE 0 END) = COUNT(*)
AND COUNT(DISTINCT market) = 2;
sql语句解析:
SELECT custid FROM table
- 表示从表 table 中选择 custid 字段。
GROUP BY custid
- 表示对结果按照 custid 字段进行分组。即对每个客户(custid)的数据进行汇总。
HAVING子句
- HAVING 用来过滤分组后的数据,它类似于 WHERE 子句,但是是对分组后的结果进行过滤的。
SUM(CASE WHEN market IN ('1', '2') THEN 1 ELSE 0 END) = COUNT(*)
- 检查每个客户 (custid) 的所有 market 值是否只包含 '1' 和 '2',即如果该客户的所有记录中 market 值包含 '1' 或 '2' 以外的其他值(比如 'A'),这个条件就不成立。
- SUM(CASE WHEN market IN ('1', '2') THEN 1 ELSE 0 END) 计算的是该 custid 中,market 字段为 '1' 或 '2' 的记录数。
- COUNT(*) 是该客户所有记录的数量。
- 如果这两个数相等,说明该客户的所有记录中的 market 值都在 '1' 和 '2' 中。
COUNT(DISTINCT market) = 2
- 确保每个客户的 market 字段中有且只有两个不同的值——'1' 和 '2'。
- 如果 market 中有更多(或更少)的不同值(比如 '1','2' 和 'A'),这个条件将不成立,客户会被排除。
猜你喜欢
- 2025-03-23 SQL 语句大全(sql语句大全及用法)
- 2025-03-23 软件测试之功能测试(软件测试功能测试项目实战)
- 2025-03-23 太神奇的 SQL 查询经历,group by 慢查询优化!
- 2025-03-23 软件测试员必看!数据库知识mysql查询语句大全
- 2025-03-23 数据库监测sql执行(数据库监测sql执行结果)
- 2025-03-23 如何对 Excel 中的数据使用 SQL 查询
- 2025-03-23 SQL点滴(查询篇):数据库基础查询案例实战
- 2025-03-23 ADODB访问Access数据库实现数据筛选、执行SQL命令与数据检查
- 2025-03-23 如何一眼定位SQL的代码来源:一款SQL染色标记的简易MyBatis插件
- 2025-03-23 SQL注入详解(sql注入实战教程)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)