力扣刷MySQL-第七弹(详细讲解)

 🎉欢迎您来到我的MySQL基础复习专栏

☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹
✨博客主页:小小恶斯法克的博客
🎈该系列文章专栏:力扣刷题讲解-MySQL
🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏
📜 感谢大家的关注! ❤️

​​​

目录

 🚀销售员

 🚀判断三角形

 🚀回顾case和if语法


  🚀销售员

表: SalesPerson

+-----------------+---------+
| Column Name     | Type    |
+-----------------+---------+
| sales_id        | int     |
| name            | varchar |
| salary          | int     |
| commission_rate | int     |
| hire_date       | date    |
+-----------------+---------+
sales_id 是该表的主键列(具有唯一值的列)。
该表的每一行都显示了销售人员的姓名和 ID ,以及他们的工资、佣金率和雇佣日期。表:Company
+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| com_id      | int     |
| name        | varchar |
| city        | varchar |
+-------------+---------+
com_id 是该表的主键列(具有唯一值的列)。
该表的每一行都表示公司的名称和 ID ,以及公司所在的城市。

表: Orders

+-------------+------+
| Column Name | Type |
+-------------+------+
| order_id    | int  |
| order_date  | date |
| com_id      | int  |
| sales_id    | int  |
| amount      | int  |
+-------------+------+
order_id 是该表的主键列(具有唯一值的列)。
com_id 是 Company 表中 com_id 的外键(reference 列)。
sales_id 是来自销售员表 sales_id 的外键(reference 列)。
该表的每一行包含一个订单的信息。这包括公司的 ID 、销售人员的 ID 、订单日期和支付的金额。

编写解决方案,找出没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。

以 任意顺序 返回结果表。

返回结果格式如下所示。

示例 1:

输入:
SalesPerson 表:
+----------+------+--------+-----------------+------------+
| sales_id | name | salary | commission_rate | hire_date  |
+----------+------+--------+-----------------+------------+
| 1        | John | 100000 | 6               | 4/1/2006   |
| 2        | Amy  | 12000  | 5               | 5/1/2010   |
| 3        | Mark | 65000  | 12              | 12/25/2008 |
| 4        | Pam  | 25000  | 25              | 1/1/2005   |
| 5        | Alex | 5000   | 10              | 2/3/2007   |
+----------+------+--------+-----------------+------------+
Company 表:
+--------+--------+----------+
| com_id | name   | city     |
+--------+--------+----------+
| 1      | RED    | Boston   |
| 2      | ORANGE | New York |
| 3      | YELLOW | Boston   |
| 4      | GREEN  | Austin   |
+--------+--------+----------+
Orders 表:
+----------+------------+--------+----------+--------+
| order_id | order_date | com_id | sales_id | amount |
+----------+------------+--------+----------+--------+
| 1        | 1/1/2014   | 3      | 4        | 10000  |
| 2        | 2/1/2014   | 4      | 5        | 5000   |
| 3        | 3/1/2014   | 1      | 1        | 50000  |
| 4        | 4/1/2014   | 1      | 4        | 25000  |
+----------+------------+--------+----------+--------+
输出:
+------+
| name |
+------+
| Amy  |
| Mark |
| Alex |
+------+
解释:
根据表order中的订单 '3' 和 '4' ,容易看出只有 'John' 和 'Pam' 两个销售员曾经向公司 'RED' 销售过。所以我们需要输出表salesperson中所有其他人的名字。

 方法一 (not in)

1.先在company表中找出,name为red的com_id

2.再在orders表中找出,这个com_id所对应的销售员sales_id

3.再在SalesPerson表中找出销售id也就是sales_id不在刚刚id中的销售员,用到not in

4.根据这个id从SalesPerson表中返回销售员的姓名

5.代码如下

select name from SalesPerson where sales_id not in 
(select sales_id from Orders  where com_id in((select com_id from Company where name = 'RED')))

首先,我们可以查询公司 'RED' 的销售信息,并将其作为临时表。然后尝试将这个表与 salesperson 表建立连接,因为它有销售员的名字信息。(where用来过滤出company表中name是red的数据)

SELECT*
FROMorders oLEFT JOINcompany c ON o.com_id = c.com_id
WHEREc.name = 'RED'
;

注意:"LEFT OUTER JOIN" 可以写为 "LEFT JOIN"。

| order_id | date     | com_id | sales_id | amount | com_id | name | city   |
|----------|----------|--------|----------|--------|--------|------|--------|
| 3        | 3/1/2014 | 1      | 1        | 50000  | 1      | RED  | Boston |
| 4        | 4/1/2014 | 1      | 4        | 25000  | 1      | RED  | Boston |
显然,表中的 sales_id 列存在于 salesperson 表中,所以我们可以将其作为子查询的条件,然后使用 NOT IN 条件来获取目标数据。

SELECTs.name
FROMsalesperson s
WHEREs.sales_id NOT IN (SELECTo.sales_idFROMorders oLEFT JOINcompany c ON o.com_id = c.com_idWHEREc.name = 'RED')
;

作者:力扣官方题解
链接:https://leetcode.cn/problems/sales-person/solutions/2366337/xiao-shou-yuan-by-leetcode-solution-wg7i/
来源:力扣(LeetCode)

 

 🚀判断三角形

 表: Triangle

+-------------+------+
| Column Name | Type |
+-------------+------+
| x           | int  |
| y           | int  |
| z           | int  |
+-------------+------+
在 SQL 中,(x, y, z)是该表的主键列。
该表的每一行包含三个线段的长度。

对每三个线段报告它们是否可以形成一个三角形。

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入: 
Triangle 表:
+----+----+----+
| x  | y  | z  |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+
输出: 
+----+----+----+----------+
| x  | y  | z  | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |
+----+----+----+----------+

 

要确定每组线段是否可以形成一个三角形,我们可以使用以下SQL查询:

SELECT x, y, z,CASEWHEN x + y > z AND x + z > y AND y + z > x THEN 'Yes'ELSE 'No'END AS triangle
FROM Triangle;

这条SQL查询首先从Triangle表中选择每组线段的长度。然后,它使用CASE语句来对每组线段进行条件判断。如果任意两边之和大于第三边(即三角形的基本条件),则将结果设置为'Yes',否则设置为'No'。

根据提供的示例数据,上述查询将返回以下结果:

+----+----+----+----------+
| x  | y  | z  | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |
+----+----+----+----------+

这是因为对于第一行数据 (13, 15, 30),任意两边之和不大于第三边,所以不能构成三角形;而对于第二行数据 (10, 20, 15),任意两边之和大于第三边,所以可以构成三角形。

因此,通过这个查询,我们可以清晰地了解每组线段是否可以形成一个三角形。

或者用if也比较简单

select x, y, z, if(x+y>z and x+z>y and y+z>x, 'Yes', 'No') as triangle from triangle

 🚀回顾case和if语法

在MySQL中,CASE语句和IF函数都用于实现条件逻辑。下面是它们的详细语法:

CASE 语句

简单 CASE 表达式
CASE case_expressionWHEN when_expression THEN result[WHEN when_expression THEN result ...][ELSE else_result]
END
搜索 CASE 表达式
CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE else_result
END
  • case_expression:要进行比较的表达式或列。
  • when_expression:与case_expression进行比较的表达式或值。
  • result:如果case_expression等于when_expression,则返回的结果。
  • condition1, condition2:要评估的条件。
  • result1, result2:对应于满足条件的结果。
  • else_result:如果没有任何一个条件匹配,则返回的默认结果。

IF 函数

IF(expr, true_value, false_value)
  • expr:要评估的条件或表达式。
  • true_value:如果expr为真,则返回的值。
  • false_value:如果expr为假,则返回的值。

示例

使用 CASE 表达式
SELECT name,CASE WHEN age < 18 THEN 'Minor'WHEN age BETWEEN 18 AND 65 THEN 'Adult'ELSE 'Senior'END AS age_group
FROM people;
使用搜索 CASE 表达式
SELECT product_name,CASE WHEN quantity > 10 THEN 'In Stock'WHEN quantity <= 10 AND quantity > 0 THEN 'Limited Stock'ELSE 'Out of Stock'END AS stock_status
FROM products;
使用 IF 函数
SELECT product_name,IF(quantity > 10, 'In Stock', 'Out of Stock') AS stock_status
FROM products;

希望对你有帮助!

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

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

相关文章

Ranger概述及安装配置

一、前序 希望拥有一个框架,可以管理大多数框架的授权,包括: hdfs的目录读写权限各种大数据框架中的标的权限,列级(字段)权限,甚至行级权限,函数权限(UDF)等相关资源的权限是否能帮忙做书库脱敏Ranger框架应运而生。 二、Ranger 2.1、什么是ranger Apache Ranger…

android:persistent和android:priority的区别,对进程优先级有什么影响?

前言&#xff1a;写的apk因为系统busy给我kill了&#xff0c;(adj 900): kill all background&#xff0c;在AndroidManifest.xml添加android:persistent"true"后&#xff0c;被甲方要求不能这样做&#xff0c;还是得从adj改&#xff0c;把 priority改成1000 android…

linux clickhouse 安装

1、官网下载clickhouse安装包 下载地址&#xff0c; clickhouse分lts和stable版本&#xff0c;lts是长期版本&#xff0c;一般选择安装lts版本。 其中clickhouse-server是clickhouse服务&#xff0c;就是用来访问数据存储数据&#xff0c;clickhouse-client是用来通过命令访问数…

HNU-数据挖掘-实验3-图深度学习

数据挖掘课程实验实验3 图深度学习 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验3 图深度学习实验背景实验要求数据集解析实验内容&#xff08;0&#xff09;基础知识&#xff1a;基于图的深度学习方法浅识&#xff1a;图卷积网络 (GCN)浅识&…

2023年度总结

这个月不知道写什么&#xff0c;那就总结一下过去的2023吧。公司最近事情也多&#xff0c;让我也歇歇&#x1f64f; 回顾 首先回顾一下去年给自己的三个flag&#xff1a; 控制体重&#xff0c;坚持健身锻炼。坚持内容输出&#xff0c;Github上的开源项目继续坚持维护。系统学…

垃圾回收小程序:环保与便捷的完美结合

一、引言 随着科技的发展&#xff0c;移动应用程序已经成为人们日常生活中不可或缺的一部分。其中&#xff0c;废品回收小程序以其独特的价值和功能&#xff0c;日益受到人们的关注和青睐。本文将探讨废品回收小程序开发的重要性、功能特点、技术实现和未来发展趋势。 二、废…

linux 安装 grafana

Ubuntu 和 Debian(64 位)SHA256&#xff1a; e551434e9e3e585633f7b56a33d8f49cda138d92ad69c2c29dcec2c3ede84607 sudo apt-get install -y adduser libfontconfig1 muslwget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.2.3_amd64.debsudo dpkg -i gra…

服务器渲染+自定义模块+mysql操作

1.服务器渲染 A.第一步&#xff0c;导入模块库和第三方库 npm init npm --registry https://registry.npmmirror.com install art-template moment B.第二步&#xff0c;调整html文件 <!DOCTYPE html> <html lang"en"><head><meta charset…

CVE-2024-0738 Mldong ExpressionEngine RCE漏洞分析

漏洞描述 A vulnerability, which was classified as critical, has been found in ???? mldong 1.0. This issue affects the function ExpressionEngine of the file com/mldong/modules/wf/engine/model/DecisionModel.java. The manipulation leads to code injection…

微信授权登陆

1.官方网站&#xff1a;微信登录功能 / 网页应用授权用户信息变更 (qq.com) 2.登陆流程&#xff1a; 和登陆微信没关系&#xff0c;是用户的微信号&#xff0c;和我程序的程序编号&#xff08;微信给的 目前用的老师的&#xff09;&#xff0c;去请求微信的接口&#xff0c;微…

WPF多值转换器

背景&#xff1a;实现Slider拖动可以调整rgb 单转换器&#xff1a;WPF中数据绑定转换器Converter-CSDN博客 在View中&#xff1a; <StackPanel Orientation"Vertical"><Slider x:Name"slider_R" Minimum"0" Maximum"255" Wi…

Python教程:拆分多级目录的方法

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 实现多级目录差分&#xff0c;举例说明如下&#xff1a; 假设现有的目录结构如下&#xff1a;1、2、2.1、2.2、2.3、2.4、3、4、5、6、6.1、6.1.1、6.1.2、6.1.3、6…

antv/g6绘制数据流向图

antv/g6绘制数据流向图 前言接口模拟数据htmlts页面效果 前言 在业务开发中需要绘制数据流向图&#xff0c;由于echarts关系图的限制以及需求的特殊要求&#xff0c;转而使用antv/g6实现&#xff0c;本文以代码的方式实现数据流向需求以及节点分组,版本"antv/g6": “…

Javadoc的讲解使用

概述&#xff1a;JavaDoc 是用于生成 Java 代码文档的工具。通过编写 JavaDoc 注释&#xff0c;可以为代码中的类、接口、方法、字段等元素添加文档注释&#xff0c;这些注释将被 JavaDoc 工具解析并生成相应的 HTML 文档。 目录 讲解 使用 结果 讲解 下面是一些关于 Java…

MCU常用外设总线

目录 前言一、时钟与中断二、GPIO三、ADC四、定时器4.1 基本定时器4.2 通用定时器4.2.1 输入捕获4.2.2 输出比较 五、UART5.1 通讯的基本概念5.1.1 串行通讯与并行通讯5.1.2 全双工、半双工及单工通讯5.1.3 同步通讯与异步通讯5.1.4 通信速率 5.2 异步串口UART5.2.1 物理层5.2.…

如何使用iPhone或iPad上的二维码共享Wi-Fi密码?这里有详细步骤

你有没有想过在不泄露网络密码的情况下与客人共享你的家庭或工作Wi-Fi?你肯定不是第一个这样想的人,我们很高兴地通知你,多亏了以下这个的变通方法,你现在可以使用iPhone或iPad做到这一点。 通常,如果你想让其他人访问网络,你需要共享你的Wi-Fi密码。苹果通过引入与任何…

嵌入式-stm32-江科大-EXTI外部中断

文章目录 一&#xff1a;EXTI外部中断&#xff08;external interrupt&#xff09;1.1 STM32 中断系统1.2 STM32外部中断EXTI1.3 实验&#xff1a;对射式红外传感器计次1.31 编程感想 1.4 实验&#xff1a;旋转编码器计次1.41 编程感想 道友&#xff1a;没有永久的巅峰也没有永…

Influxdb系列(一)influxdb2.7.x的部署安装

一、influxdb的介绍 InfluxDB 是一种时序数据库&#xff0c;时序数据库通常被用在监控场景&#xff0c;比如运维和 IOT&#xff08;物联网&#xff09;领域。这类数据库旨在存储时序数据并实时处理它们。 比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 In…

JVM-初始JVM

什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; JVM的功能 1 - 解释和运行 2 - 内存管理 3 - 即时编译 解释和运行 解释…

2024转行程序员的请注意:均月薪在40-70k

前言 2023年&#xff0c;对大多数行业来说都是不太好过的一年。 对程序员来说也是如此&#xff0c;很多粉丝朋友都在说android工作特别难找&#xff0c;一个岗位都是几千份简历…大家心里都是特别的焦虑&#xff0c;本以为2024年就业情况会有好转&#xff0c;但实际上并非如此…