SQL 查询顾客买了A和B,但是没有买C

【高频SQL (进阶版)】1398.购买了产品A和产品B却没有购买产品C的顾客Plus 思路1:买了A,买了B,没有买C。按人分组统计,A的数>0, B的数>0 ,C的数 = 0。思路2:反过来查,用户id。在产品表里,产品名为A,为B的用户列表里,但是不在产品表里,产品为C的用户列表里。 阅读详情

看到的,觉得很有用记录下来

原文出处


问题描述很简单,就是查询购买了产品A和B但是没有购买产品C的顾客


测试数据

--===== Conditionally drop the test table to make
     -- reruns in SSMS easier.
     IF OBJECT_ID('tempdb..#Purchase','U') IS NOT NULL
        DROP TABLE #Purchase
;
--===== Create the test table
 CREATE TABLE #Purchase
        (
         PurchaseID     INT IDENTITY(1,1),
         CustomerID     INT,
         ProductCode    CHAR(1)
         PRIMARY KEY CLUSTERED (PurchaseID)
        )
;
--===== Populate the test table with known data.
 INSERT INTO #Purchase
        (CustomerID, ProductCode)
------- Customer #1 precisely meets the criteria.
     -- Bought 'A' and 'B' but not 'C'.
 SELECT 1, 'A' UNION ALL
 SELECT 1, 'B' UNION ALL
------- Customer #2 also meets the criteria.
     -- Bought 'A' and 'B' and somthing else,
     -- but not 'C'.
 SELECT 2, 'A' UNION ALL
 SELECT 2, 'B' UNION ALL
 SELECT 2, 'D' UNION ALL
------- Customer #3 also meets the criteria.
     -- Bought 'A' and 'B' and something else,
     -- but not 'C'.
 SELECT 3, 'A' UNION ALL
 SELECT 3, 'B' UNION ALL
 SELECT 3, 'D' UNION ALL
 SELECT 3, 'A' UNION ALL
 SELECT 3, 'D' UNION ALL
------- Customer #4 doesn't meet the criteria.
     -- Bought 'A' and 'B' but also bought 'C'.
 SELECT 4, 'A' UNION ALL
 SELECT 4, 'B' UNION ALL
 SELECT 4, 'C' UNION ALL
------- Customer #5 doesn't meet the criteria.
     -- Bought 'A' and 'B' and something else,
     -- but also bought 'C'.
 SELECT 5, 'A' UNION ALL
 SELECT 5, 'B' UNION ALL
 SELECT 5, 'A' UNION ALL
 SELECT 5, 'B' UNION ALL
 SELECT 5, 'C' UNION ALL
 SELECT 5, 'D' UNION ALL
------- Customer #6 doesn't meet the criteria.
     -- Bought more than 1 of 'A' and something else
     -- but not 'B'.
 SELECT 6, 'A' UNION ALL
 SELECT 6, 'A' UNION ALL
 SELECT 6, 'D' UNION ALL
 SELECT 6, 'E' UNION ALL
------- Customer #7 doesn't meet the criteria.
     -- Bought more than 1 of 'B' and something else
     -- but not 'A'.
 SELECT 7, 'B' UNION ALL
 SELECT 7, 'B' UNION ALL
 SELECT 7, 'D' UNION ALL
 SELECT 7, 'E'
;


中间跳过一些简单过程。测试数据中顾客6买了两个A但没有买B, 顾客7买了两个B但是没有买A。他们不应该出现在同时购买A和B的顾客集中


查询语句

--===== Find Customers that bought "A" AND "B"
     -- HAVING is like a WHERE for GROUP BYs.
 SELECT CustomerID
   FROM #Purchase
  WHERE ProductCode IN ('A','B')
  GROUP BY CustomerID
 HAVING COUNT(DISTINCT ProductCode) = 2
;

查询结果

CustomerID
-----------
1
2
3
4
5

现在从上面的结果中剔除买了C的顾客

   FROM #Purchase
  WHERE ProductCode IN ('A','B')
  GROUP BY CustomerID
 HAVING COUNT(DISTINCT ProductCode) = 2
 EXCEPT
--===== Find Customers that bought "C".
 SELECT CustomerID
   FROM #Purchase
  WHERE ProductCode IN ('C')
;

查询结果

CustomerID
-----------
1
2
3

搞定

mysql同时购买两种商品_SQL题1——查询所有购入商品为两种或两种以上的购物人记录... 题目1:假设顾客购物表 customer_shopping结构如下:customer  commodity  amountA      甲      2B      乙      4C      丙      1A      丁      2B      丙      5......请写出Sql查询所有购入商品为两种或两种以上的购物人记录;create table customer_... 阅读详情

相关推荐

MySql力扣VIP面试题:1398. 购买了产品A和产品B却没有购买产品C的顾客+1596. 每位顾客最经常订购的商品+1421. 净现值查询

转载: 声明:如果我侵犯了任何人的权利,请联系我,我会删除 欢迎高手来喷我 文章目录1398. 购买了产品A和产品B却没有购买产品C的顾客题目描述题解1596. 每位顾客最经常订购的商品题目描述题解1421. 净现值查询题目描述题解 1398. 购买了产品A和产品B却没有购买产品C的顾客 链接:https://leetcode-cn.com/problems/customers-who-bought-products-a-and-b-but-not-c/solution/liang-chong-fang-s

qq_45531729的博客 854

SQL查找既购买过ProductA又购买过ProductB,但没有购买ProductC的用户人数,并计算平均客单价(in、聚合函数)

SQL查找既购买过ProductA又购买过ProductB,但没有购买ProductC的用户人数,并计算平均客单价(in、聚合函数)

前景 1934

学完这个语句,你可以做出所有的SQL笔试题(查询到的表格怎么存储再次使用)

视观表 (View) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。 建立一个视观表的语法如下: CREATE VIEW "VIEW_NAME" AS "SQL 语句"; 例子: 我们查询到: select a.SKU_ID,a.logday,a.sale_amt,b.bu_name,b.brand_name,b.user_name from a,b where a.SKU_id=b.SKU_id and user_name='\u5c0f\u660e' and year(logday)=2017 后面想要再次使用,重新写sql语句

1108课后作业

1108课后作业

Wenhua23 472

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2979

Linux下自动化解析q7签名文件的有效期与时间戳

本文详细介绍了在Linux环境下自动化解析q7签名文件有效期与时间戳的方法。通过编写高效脚本,开发者可以批量提取签名时间信息,验证签名有效性,并集成到CI/CD流程中。文章提供了完整的脚本实现,包括错误处理、批量处理功能,并解决了常见环境问题,特别适用于国产操作系统如UOS的开发场景。

weixin_30872499的博客 518

【SQL思考记录】力扣1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客

子句用于筛选满足特定条件的顾客。

未来就在脚下。 508

redhawk-sc使用简介

数据完整性对结果的准确性有很大影响,所以一定要保证数据完整性,Redhawk-sc在跑完后,Report里有Data Integrity界面,在这个界面会看到设计数据和库文件的数据完整性,在相应的报告中会有没有覆盖到的数据情况,要对每一项仔细检查,保证输入数据没有问题。文件一般加密,用户唯一需要选择的是文件的corner。其中,cell lef除了常规的standard cell,还有如DTCD,BTSV和clamp等cell的lef,不可缺失,否则data integrity将不是100%。

weixin_48518726的博客 3134

Leetcode力扣 MySQL数据库 1398 购买产品A和产品B却没有购买产品C的顾客

Leetcode力扣 MySQL数据库 1398 购买产品A和产品B却没有购买产品C的顾客

m0_46458212的博客 170

KNX智能家居工程设计应用

KNX,是一个起源于欧洲的总线标准,主要应用于家居和楼宇中,对末端电气设备进行总线式的控制,比如照明、空调、地暖、电动窗帘和遮阳设备等等。根据2017年英国著名咨询公司BSRIA的数据报告显示,在中国的智能家居和灯光控制市场,KNX产品的市场份额为各类产品中排名第一,占据了42%的市场份额,远远领先于其他的标准协议。设备中一个继电器表示一路输出,某些功能可能需要用到多个输出,比如1个窗帘AC输出需要占用两路继电器输出,一个继电器用于控制正转,一个用于控制反转,而普通开关输出则需要占用一路继电器输出即可。

hhhh5555666的博客 934

IAR9.20.4安装与注册全攻略:附资源及典型问题解决方案

本文提供IAR9.20.4的详细安装与注册指南,涵盖环境准备、安装步骤、权限设置及注册机使用技巧。针对典型问题如评估版残留、权限不足和杀毒软件拦截等,给出了具体解决方案,帮助用户顺利完成IAR开发环境的搭建与激活。

a2b3c4d5e的博客 295

力扣高频 SQL50 题(进阶版)重点部分

请你编写解决方案,报告购买了产品 “A”,“B” 但没有购买产品 “C” 的客户的 customer_id 和 customer_name,因为我们想推荐他们购买这样的产品。返回按 customer_id 排序 的结果表。返回结果格式如下所示。

zuojie412的博客 1141

5套高颜值AI漫剧女主设定图!直接拿去做漫剧(附完整提示词)

左侧特写放大表现暖棕眼妆、豆沙唇、红宝石首饰、发丝与针织纹理,四个视图严格保持同一人物脸模、发色、服装、首饰和身体比例,柔和复古棚拍光,低饱和酒红与奶油色配色,真实布料、皮革、金属与宝石材质,高级精致角色资产设定图,高清8K。佩戴珍珠与透明水晶耳坠、纤细珍珠项链;左侧特写放大至胸部以上,清晰表现皮肤、眼妆、发丝、耳饰和针织材质,人物四个视图保持同一脸模、发型、服装、饰品和身体比例,柔和棚拍漫射光,轻微地面阴影,高级细腻材质,真实发丝,细腻皮肤,高精度角色资产设定图,高清8K质感。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1640

力扣1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客

Customers表:customer_id 是这张表中具有唯一值的列。customer_name 是顾客的名称。Orders表:order_id 是这张表中具有唯一值的列。customer_id 是购买了名为 "product_name" 产品顾客的id。请你编写解决方案,报告购买了产品但没有购买产品的客户的 customer_id 和 customer_name,因为我们想推荐他们购买这样的产品。返回按的结果表。返回结果格式如下所示。

dhdbanwan的博客 819

Copilot在游戏开发中的应用:Unity脚本自动生成实践

2021年GitHub Copilot的发布,为代码自动生成带来了革命性突破。作为基于GPT模型训练的AI辅助编程工具,Copilot能根据注释、函数名、代码上下文,实时生成符合语法和逻辑的代码片段,甚至完整脚本。减少重复劳动:自动生成模板代码(如生命周期、结构),让你专注核心逻辑;降低API学习成本:对Unity特有的组件(RigidbodyAnimator)、类(),Copilot能生成符合最佳实践的调用代码;统一代码风格:通过团队共享提示词模板,让生成的代码符合项目规范;快速原型迭代。

AIGC应用创新大全的博客 1617

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2622

#1398.购买了产品A和产品B却没有购买产品C的顾客

这题要求找到购买了A产品和B产品却没有购买C产品的顾客,所以可以从订单表Orders表筛选出买了A产品的顾客,买了B产品的顾客和没买C产品的顾客,让这个三个条件并列存在就可得出目标客户,即。再让结果和Customers表相连接,就能得出要求的customer列,即最终结果。

2301_78419512的博客 207

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Leetcode】SQL购买了产品A和产品B却没有购买产品C的顾客

请你编写解决方案,报告购买了产品 “A”,“B” 但没有购买产品 “C” 的客户的 customer_id 和 customer_name,因为我们想推荐他们购买这样的产品。只有 customer_id 为 3 的顾客购买了产品 A 和产品 B ,却没有购买产品 C。customer_id 是购买了名为 “product_name” 产品顾客的id。customer_id 是这张表中具有唯一值的列。返回按 customer_id 排序 的结果表。customer_name 是顾客的名称。

yalei的博客 375

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode:Database 93.购买了产品 A 和产品 B 却没有购买产品 C 的顾客

要求:请你设计 SQL 查询来报告购买了产品 A 和产品 B 却没有购买产品 C 的顾客的 ID 和姓名( customer_id 和 customer_name ),我们将基于此结果为他们推荐产品 C 。

Xiao Miao的博客 204

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

每日一题-89(购买了产品A和产品B却没有购买产品C的顾客)

题89: 根据下面两表编写SQL 查询来报告购买了产品 A 和产品 B 却没有购买产品 C 的顾客的 ID 和姓名( customer_id 和 customer_name ),我们将基于此结果为他们推荐产品 C ,您返回的查询结果需要按照 customer_id 排序。 其中: Customers表:customer_id 是主键,customer_name 是顾客的名称; Orders表:order_id 是主键,customer_id 是购买了名为 “product_name” 产品顾客的id。

Txixi的博客 802

Sql刷题-力扣-中级(3)

hivesql刷题

ABC15732186271的博客 454

「SQL面试题库」 No_104 购买了产品A和产品B却没有购买产品C的顾客

《100天精通Python》专栏,最详细的Python入门到精通教程;理论篇基础知识讲解构建体系框架、实践篇Python黑科技学以致用。https://blog.youkuaiyun.com/weixin_39032019/category_12263598.html

独木不成林,单弦不成音。 4430

48,SQL训练之,力扣,1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客

sql训练。不同方法和详细思路和步骤 解:力扣,1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客

qq_55006020的博客 949

LeetCode MySQL 1398. 购买了产品A和产品B却没有购买产品C的顾客

文章目录1. 题目2. 解题 1. 题目 Customers 表: +---------------------+---------+ | Column Name | Type | +---------------------+---------+ | customer_id | int | | customer_name | varchar | +---------------------+---------+ customer_id 是这张表的主

Michael是个半路程序员 1534

1398. 购买了产品A和产品B却没有购买产品C的顾客(SQL)

题目:https://leetcode-cn.com/problems/customers-who-bought-products-a-and-b-but-not-c/ Customers表: +---------------------+---------+ | Column Name | Type | +---------------------+---------+ | customer_id | int | | customer_name ...

anningne的专栏 595

1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客

的客户的 customer_id 和 customer_name,因为我们想推荐他们购买这样的产品。只有 customer_id 为 3 的顾客购买了产品 A 和产品 B ,却没有购买产品 C。customer_id 是购买了名为 "product_name" 产品顾客的id。商业转载请联系官方授权,非商业转载请注明出处。customer_id 是这张表中具有唯一值的列。order_id 是这张表中具有唯一值的列。customer_name 是顾客的名称。

CYJ1844的博客 894
上一篇: Assign directory/file access rights to 'everyone'
下一篇: 写在冬日的第一天--一个女程序员第十年工作总结
clear_zero
博客等级 码龄24年 2426粉丝 36原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值