【MySQL】分组(group by)后再筛选(having)巧用 sum(条件表达式) 语法

力扣题

1、题目地址

1083. 销售分析 II

2、模拟表

表:Product

Column NameType
product_idint
product_namevarchar
unit_priceint
  • Product_id 是该表的主键(具有唯一值的列)。
  • 该表的每一行表示每种产品的名称和价格。

表:Sales

Column NameType
seller_idint
product_idint
buyer_idint
sale_datedate
quantityint
priceint
  • 这个表可能有重复的行。
  • product_id 是 Product 表的外键(reference 列)。
  • buyer_id 永远不会是 NULL。
  • sale_date 永远不会是 NULL。
  • 该表的每一行都包含一次销售的一些信息。

3、要求

编写一个解决方案,报告那些买了 S8 而没有买 iPhone 的 买家。注意,S8 和 iPhone 是 Product 表中显示的产品。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Product 表:

product_idproduct_nameunit_price
1S81000
2G4800
3iPhone1400

Sales 表:

seller_idproduct_idbuyer_idsale_datequantityprice
1112019-01-2122000
1222019-02-171800
2132019-06-021800
3332019-05-1322800

输出:

buyer_id
1

解释:
id 为 1 的买家购买了一部 S8,但是却没有购买 iPhone,而 id 为 3 的买家却同时购买了这 2 部手机。

4、代码编写

我的写法

思路是将买 S8 的买家先查询出来,再把买 iPhone 的人排除掉

SELECT DISTINCT(buyer_id)
FROM (SELECT a.buyer_idFROM Sales aLEFT JOIN Product b ON a.product_id = b.product_idWHERE b.product_name = 'S8'
) AS one
WHERE NOT EXISTS (SELECT a.* FROM Sales aLEFT JOIN Product b ON a.product_id = b.product_idWHERE a.buyer_id = one.buyer_id AND b.product_name = 'iPhone'
)

网友写法

用 sum 判断等式,符合值为1,不符合为0,很巧妙

SELECT b.buyer_id
FROM Product a, Sales b
WHERE a.product_id = b.product_id
GROUP BY b.buyer_id
HAVING SUM(a.product_name = 'S8') > 0 AND SUM(a.product_name = 'iPhone') = 0

知识点

可参考我之前写的文章:【MySQL】sum 函数和 count 函数的相同作用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Studio 3T客户端连接Mongodb数据库服务

这里需要注意 一定要先开Studio 3T 到 创建连接时才开Mongodb服务 不然 Studio 3T 会找不到Mongodb服务 不知道这是不是 Studio 3T官方问题 期待解决吧 我们打开 Studio 3T 然后点击 Create a new connection 开始创建连接 新弹出的窗口中选择 Manually configure my connec…

实验4.4 动态路由OSPF协议的配置

实验4.4 动态路由OSPF协议的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.配置交换机和路由器的接口的IP地址等参数。2.配置动态路由OSPF协议,实现全网互通。 六、任务验收七、任务小结八、知识链接1.OSPF协议概念2.…

MessageBox打通数字通信:深度解析HubSpot与微信群的无缝对接

在当今数字化时代,企业追求更高效的客户互动方式。HubSpot作为综合性的市场营销、销售和服务平台,其与微信群的无缝对接成为企业数字化沟通的重要一环。今天运营坛将深度解析HubSpot如何精准对接微信群,并着重探讨MessageBox在这一过程中的关…

鸿蒙Ability开发-Stage模型下Ability的创建和使用

创建Ability和Page页面 创建两个Ability:EntryAbility,DetailsAbility,其中EntryAbility是由工程默认创建的,这里我们只讲如何创建DetailsAbility。 使用DevEco Studio,选中对应的模块,单击鼠标右键&…

【DSP原理及应用】实验-CCS的使用与汇编程序设计

目录 实验 CCS的使用和汇编程序设计一、实验目的二、试验设备三、实验内容四、实验程序 实验 CCS的使用和汇编程序设计 一、实验目的 熟悉CCS开发软件 学会C55X汇编语言程序设计 熟悉c55x汇编指令 二、试验设备 计算机,CCS开发环境 三、实验内容 安装CCS5.5 …

vcpkg安装zlmediakit(windows环境)

文章目录 一、简介二、vcpkg安装1. vcpkg源码下载2. vcpkg安装 三、安装zlmediakit1. 默认安装开启特性: [core,mp4,openssl,webrtc]2. 安装全部特性zlmediakit(包括webrtc datachannel)3. 安装路径4. 安装不同的版本5. 卸载 四、问题1. 启动服务乱码问题 一、简介 vcpkg是一个…

2401vim,vim重要修改更新大全

原文 2023 更好的UTF-16支持 添加strutf16len()和utf16idx(),并在byteidx(),byteidxcomp()和charidx()中添加utf16标志,在内置.txt文档中. 添加crypymethod xchacha20v2 与xchacha20基本相同,但更能抵御libsodium的变化. 2022 添加"smoothscroll" 用鼠标滚动…

Saprk SQL基础知识

一.Spark SQL基本介绍 1.什么是Spark SQL Spark SQL是Spark多种组件中其中一个,主要是用于处理大规模的[结构化数据] Spark SQL的特点: 1).融合性:既可以使用SQL语句,也可以编写代码,同时支持两者混合使用. 2).统一的数据访问:Spark SQL用统一的API对接不同的数据源 3).H…

超好用的阅读器更新摸鱼模式啦

潮汐阅读器重磅更新啦!这次更新的是隐蔽模式(摸鱼模式)。 何为隐蔽模式?就是将阅读窗口的标题栏隐藏掉,从而可以使阅读窗口可以隐藏在任意其他窗口里面不被发现,从而可以快乐的看小说摸鱼啦! …

InfluxDB学习笔记

本博客是我在学习InfluxDB的时候,记录的笔记,大家可以看看参考学些。 简介 简述 InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT…

18.将文件上传至云服务器 + 优化网站的性能

目录 1.将文件上传至云服务器 1.1 处理上传头像逻辑 1.1.1 客户端上传 1.1.2 服务器直传 2.优化网站的性能 2.1 本地缓存优化查询方法 2.2 压力测试 1.将文件上传至云服务器 客户端上传:客户端将数据提交给云服务器,并等待其响应;用户…

软件工程造价师证书有用吗?难不难考?

🎯软件工程造价师证书是有用的,它证明了持有人具备评估和估算软件开发cheng本、进度和资源规划的能力。✔️在IT行业中,受高度重视,特别是在软件开发和项目管理领域。 👩软件工程造价师考试难易程度因人而异。该证书需…

影响代理IP稳定性的因素有哪些?

代理IP作为一种网络服务,在生活中扮演着各种各样的角色。它们可以用于保护隐私、突破访问限制、提高网络安全性等。代理IP的稳定性受到多种因素的影响,下面和大家探讨一下影响代理IP稳定性的因素。 1、网络环境:代理IP所处的网络环境对它的稳…

腾讯云新用户的定义与权益

腾讯云作为国内领先的云计算服务提供商,吸引了越来越多的用户。对于新用户来说,了解腾讯云的新用户定义和相关权益非常重要,因为它关系到用户能否享受到更多的优惠和服务。 一、腾讯云新用户的定义 腾讯云新用户是指首次注册腾讯云账号并且没…

【数据库】mysql事务

一、事务的基本概念 1、事务的定义 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。。 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行&…

Java技术专题:「入门到精通系列」深入探索常用的六种加密技术和实现

文章目录 1. 引言2. 对称加密3. 非对称加密4. 哈希算法5. 消息摘要6. 数字签名7. 数字证书8. 拓展功能与未来展望 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&am…

产品经理如何选择城市?

年底,全国性的人口大迁徙即将开始。选择城市,堪称年轻人的“二次投胎”,族望留原籍,家贫走他乡。 古人在选择城市时,主要的考量因素是家族势力,这一点放在当代,大致也成立,如果在老…

如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具&#xff0…

C# 反射的终点:Type,MethodInfo,PropertyInfo,ParameterInfo,Summry

文章目录 前言反射是什么?常用类型操作SummryPropertyInfoMethodInfo无参函数运行 有参函数运行,获取paramterInfo 总结 前言 我之前写了一篇Attribute特性的介绍,成功拿到了Attribute的属性,但是如果把Attribute玩的溜,那就要彻…

【Databend】数据库和表操作

文章目录 数据库操作数据表操作创建表删除表和恢复表查看表修改表 总结 数据库操作 基本语法: -- 创建数据库 create database if not exists database_name; -- 查看创建数据库语句 show create database database_name; -- 使用数据库 use database_name; -- 重…