当前位置: 首页 > news >正文

SQL中的CASE WHEN语句:从基础到高级应用指南

SQL中的CASE WHEN语句:从基础到高级应用指南

准备工作 - 表1: products 示例数据:

我们使用一个名为"Products"的表,包含以下列:ProductID、ProductName、CategoryID、UnitPrice、StockQuantity。

-- 建表
CREATE TABLE `products` (`productID` int(11) NOT NULL,`productName` varchar(255) DEFAULT NULL,`categoryID` int(11) DEFAULT NULL,`unitPrice` int(11) DEFAULT NULL,`stockQuantity` int(11) DEFAULT NULL,PRIMARY KEY (`productID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 样例数据
INSERT INTO `products` VALUES (1, 'Laptop', 1, 800, 50);
INSERT INTO `products` VALUES (2, 'Smartphone', 1, 500, 100);
INSERT INTO `products` VALUES (3, 'T-shirt', 2, 20, 200);
INSERT INTO `products` VALUES (4, 'Jeans', 2, 40, 150);
INSERT INTO `products` VALUES (5, 'Headphones', 1, 100, 75);
  • 示例展示
productIDproductNamecategoryIDunitPricestockQuantity
1Laptop180050
2Smartphone1500100
3T-shirt220200
4Jeans240150
5Headphones110075

一. CASE WHEN 基础使用

1. CASE WHEN-基本使用

SELECTProductName,UnitPrice,
CASEWHEN UnitPrice > 100 THEN'Expensive' ELSE 'Affordable' END AS PriceCategory 
FROMProducts;

查询结果:

ProductNameUnitPricePriceCategory
Laptop800Expensive
Smartphone500Expensive
T-shirt20Affordable
Jeans40Affordable
Headphones100Affordable

2. CASE WHEN-多条件

SELECTproductName,stockQuantity,
CASEWHEN stockQuantity > 100 THEN'In Stock' WHEN stockQuantity > 50 THEN'Limited Stock' ELSE 'Out of Stock' END AS StockStatus 
FROMproducts;

查询结果:

productNamestockQuantityStockStatus
Laptop50Out of Stock
Smartphone100Limited Stock
T-shirt200In Stock
Jeans150In Stock
Headphones75Limited Stock

3. CASE WHEN-聚合函数

SELECTcategoryID,AVG( unitPrice ) AS AvgPrice,
CASEWHEN AVG( unitPrice ) > 50 THEN'High Price' ELSE 'Low Price' END AS PriceCategory 
FROMproducts 
GROUP BYcategoryID;
  • 查询结果
categoryIDAvgPricePriceCategory
1466.6667Hign Price
230low Price

4. CASE WHEN-日期条件

SELECTproductName,
CASEWHEN EXTRACT( MONTH FROM CURRENT_DATE ) = 8 THEN( SELECT NOW() ) ELSE 'Other Month' END AS CurrentTime 
FROMproducts;
  • 查询结果
productNameCurrentTime
Laptop2023/8/30 19:14
Smartphone2023/8/30 19:14
T-shirt2023/8/30 19:14
Jeans2023/8/30 19:14
Headphones2023/8/30 19:14

5. CASE WHEN-用于排序

SELECTProductName,UnitPrice,CASEWHEN UnitPrice > 50 THEN 'Expensive'ELSE 'Affordable'END AS PriceCategory
FROM Products
ORDER BY UnitPrice DESC;
  • 查询结果
productNameunitPricePriceCategory
Laptop1902/3/10 0:00Expensive
Smartphone1901/5/14 0:00Expensive
Headphones1900/4/9 0:00Expensive
Jeans1900/2/9 0:00Affordable
T-shirt1900/1/20 0:00Affordable

6. CASE WHEN-子查询

SELECTproductName,unitPrice,( CASE WHEN unitPrice > ( SELECT AVG( unitPrice ) FROM products ) THEN 'Above Avg' ELSE 'Below Avg' END ) AS PriceComparison 
FROMproducts;
  • 查询结果
productNameunitPricePriceComparison
Laptop800Above Avg
Smartphone500Above Avg
T-shirt20Below Avg
Jeans40Below Avg
Headphones100Below Avg

7. CASE WHEN-计算字段

SELECTProductName,UnitPrice,StockQuantity,CASEWHEN StockQuantity > 0 THEN UnitPrice / StockQuantityELSE 0END AS PricePerUnit
FROM Products;
  • 查询结果
productNameunitPricestockQuantityPricePerUnit
Laptop8005016
Smartphone5001005
T-shirt202000.1
Jeans401500.2667
Headphones100751.3333

8. CASE WHEN-动态列名

SELECTproductName,unitPrice,stockQuantity,
CASEWHEN stockQuantity > 150 THEN'High' WHEN stockQuantity > 100 THEN'Medium' ELSE 'Low' END AS StockCategory,
CASEWHEN stockQuantity > 100 THENstockQuantity * 1.1 ELSE stockQuantity * 1.05 END AS AdjustedStock 
FROMproducts;
  • 查询结果
productNameunitPricestockQuantityStockCategoryAdjustedStock
Laptop80050Low52.5
Smartphone500100Low105
T-shirt20200High220
Jeans40150Medium165
Headphones10075Low78.75

9. CASE WHEN-带有嵌套逻辑

SELECTProductName,UnitPrice,CASEWHEN StockQuantity > 100 THENCASEWHEN UnitPrice > 50 THEN 'High Demand, High Price'ELSE 'High Demand, Affordable'ENDELSE 'Low Demand'END AS ProductStatus
FROM Products;
  • 查询结果
productNameunitPriceProductStatus
Laptop800Low Demand
Smartphone500Low Demand
T-shirt20High Demand, Affordable
Jeans40High Demand, Affordable
Headphones100Low Demand

10. CASE WHEN-处理字符串匹配

SELECTProductName,CASEWHEN ProductName LIKE '%Laptop%' THEN 'Electronics'WHEN ProductName LIKE '%T-shirt%' THEN 'Clothing'ELSE 'Other'END AS Category
FROM Products;
  • 查询结果
productNameCategory
LaptopElectronics
SmartphoneOther
T-shirtClothing
JeansOther
HeadphonesOther

11. CASE WHEN-用于条件合并

SELECTProductName,UnitPrice,CASEWHEN UnitPrice > 50 AND StockQuantity > 50 THEN 'High Price, High Stock'WHEN UnitPrice > 50 OR StockQuantity > 50 THEN 'High Price or High Stock'ELSE 'Low Price and Low Stock'END AS ProductStatus
FROM Products;
  • 查询结果
productNameunitPriceProductStatus
Laptop800High Price or High Stock
Smartphone500High Price, High Stock
T-shirt20High Price or High Stock
Jeans40High Price or High Stock
Headphones100High Price, High Stock

12. CASE WHEN-处理多列

SELECTProductName,UnitPrice,StockQuantity,CASEWHEN StockQuantity > 50 AND UnitPrice <30 THEN 'Popular and Affordable'WHEN StockQuantity <= 50 AND UnitPrice < 30 THEN 'Limited Stock, Affordable'WHEN StockQuantity > 50 AND UnitPrice >= 30 THEN 'Popular and Expensive'ELSE 'Limited Stock, Expensive'END AS ProductCategory
FROM Products;
  • 查询结果
productNameunitPricestockQuantityProductCategory
Laptop80050Limited Stock, Expensive
Smartphone500100Popular and Expensive
T-shirt20200Popular and Affordable
Jeans40150Popular and Expensive
Headphones10075Popular and Expensive

13. CASE WHEN-加入窗口函数

SELECTProductName,UnitPrice,StockQuantity,CASEWHEN StockQuantity > AVG(StockQuantity) OVER () THEN 'Above Avg Stock'ELSE 'Below Avg Stock'END AS StockComparison
FROM Products;
  • 查询结果
productNameunitPricestockQuantityStockComparison
T-shirt20200Above Avg Stock
Laptop80050Below Avg Stock
Jeans40150Above Avg Stock
Smartphone500100Below Avg Stock
Headphones10075Below Avg Stock

二. CASE WHEN 进阶使用

1. 基于历史数据的趋势预测

样例SQL:

SELECTp.ProductID,p.ProductName,s.SaleDate,s.QuantitySold,CASEWHEN s.QuantitySold > LAG(s.QuantitySold) OVER (PARTITION BY p.ProductID ORDER BY s.SaleDate) THEN 'Increased'WHEN s.QuantitySold < LAG(s.QuantitySold) OVER (PARTITION BY p.ProductID ORDER BY s.SaleDate) THEN 'Decreased'ELSE 'Stable'END AS Trend
FROM Products p
JOIN SalesHistory s ON p.ProductID = s.ProductID;

2. 基于不同维度的复杂分析

样例SQL:

SELECTo.OrderID,o.OrderDate,SUM(CASE WHEN p.CategoryID = 1 THEN o.Quantity ELSE 0 END) AS ElectronicsQuantity,SUM(CASE WHEN p.CategoryID = 2 THEN o.Quantity ELSE 0 END) AS ClothingQuantity,SUM(CASE WHEN p.CategoryID = 3 THEN o.Quantity ELSE 0 END) AS OtherQuantity
FROM Orders o
JOIN Products p ON o.ProductID = p.ProductID
GROUP BY o.OrderID, o.OrderDate;

3. 多层次CASE WHEN分析

样例SQL:

SELECTEmployeeID,FirstName,LastName,Salary,CASEWHEN Salary > 70000 THEN 'High'WHEN Salary > 60000 THEN 'Medium'WHEN Salary > 50000 THEN 'Low'ELSE 'Very Low'END AS SalaryLevel,CASEWHEN Salary > 60000 THEN 'Above Average'ELSE 'Below Average'END AS SalaryComparison
FROM Employees;

4. 使用CASE WHEN进行数据分桶

样例SQL:

SELECTCustomerID,Age,Gender,CASEWHEN Age < 30 THEN 'Young'WHEN Age >= 30 AND Age < 40 THEN 'Middle-aged'ELSE 'Senior'END AS AgeGroup,CASEWHEN Gender = 'Male' THEN 'Male'WHEN Gender = 'Female' THEN 'Female'ELSE 'Other'END AS GenderCategory
FROM Customers;

5. 基于多条件的复杂逻辑判断

样例SQL:

SELECTOrderID,OrderDate,SUM(CASE WHEN Quantity * Price > 500 THEN Quantity ELSE 0 END) AS HighValueItems,SUM(CASE WHEN Quantity * Price > 100 AND Quantity * Price <= 500 THEN Quantity ELSE 0 END) AS MediumValueItems,SUM(CASE WHEN Quantity * Price <= 100 THEN Quantity ELSE 0 END) AS LowValueItems
FROM Orders
GROUP BY OrderID, OrderDate;

三. CASE WHEN 业务场景常用技巧

1. 数据重编码

您可以使用CASE WHEN来对现有数据进行重新编码,例如将文本值转换为数字编码或将某些字符串转换为更易于处理的标识符。

SELECTcustomerName,CASEWHEN customerType = 'Individual' THEN 1WHEN customerType = 'Corporate' THEN 2ELSE 0END AS CustomerTypeCode
FROM Customers;

2. 条件分组

使用CASE WHEN可以在查询结果中创建不同的数据分组,而无需在实际数据中创建新的列。

SELECTproductName,SUM(quantity) AS totalQuantity,CASEWHEN SUM(quantity) > 100 THEN 'High'WHEN SUM(quantity) > 50 THEN 'Medium'ELSE 'Low'END AS QuantityGroup
FROM Sales
GROUP BY productName;

3. 动态排序规则

通过在ORDER BY子句中使用CASE WHEN,您可以根据不同条件动态调整查询结果的排序规则。

SELECTproductName,unitPrice
FROM Products
ORDER BYCASEWHEN category = 'Electronics' THEN unitPriceWHEN category = 'Clothing' THEN unitPrice * 0.9ELSE unitPrice * 1.1END;

4. 分位数分析

使用CASE WHEN可以在查询结果中对数据进行分位数分析,识别哪些数据点位于不同的分位数区间。

SELECTproductName,unitPrice,CASEWHEN unitPrice <= PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY unitPrice) THEN 'Q1'WHEN unitPrice <= PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY unitPrice) THEN 'Q2'WHEN unitPrice <= PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY unitPrice) THEN 'Q3'ELSE 'Q4'END AS PriceQuartile
FROM Products;

5. 缺失数据填充

使用CASE WHEN可以根据条件将缺失的数据点填充为特定值,从而更好地处理数据缺失情况。

SELECTorderID,orderDate,CASEWHEN orderAmount IS NULL THEN 0ELSE orderAmountEND AS FilledOrderAmount
FROM Orders;

6. 日期区间分析

使用CASE WHEN可以对日期进行区间分析,例如判断每个日期属于哪个季节、哪个月份等。

SELECTorderDate,CASEWHEN EXTRACT(MONTH FROM orderDate) IN (12, 1, 2) THEN 'Winter'WHEN EXTRACT(MONTH FROM orderDate) IN (3, 4, 5) THEN 'Spring'WHEN EXTRACT(MONTH FROM orderDate) IN (6, 7, 8) THEN 'Summer'ELSE 'Fall'END AS Season
FROM Orders;

7. 业务阶段分析

使用CASE WHEN可以根据特定业务规则判断数据所处的不同阶段,如用户生命周期阶段、订单处理阶段等。

SELECTuserID,registrationDate,CASEWHEN NOW() - registrationDate < INTERVAL '30 days' THEN 'New User'WHEN NOW() - registrationDate < INTERVAL '90 days' THEN 'Regular User'ELSE 'Inactive User'END AS UserStage
FROM Users;

8. 动态列选择

使用CASE WHEN可以在查询结果中根据条件选择不同的列,从而根据业务需求定制查询结果。

SELECTorderID,orderDate,CASEWHEN displayPrice = 'Gross' THEN grossPriceELSE netPriceEND AS SelectedPrice
FROM Orders;

9. 异常值标记

使用CASE WHEN可以根据条件识别和标记异常数据点,帮助进行数据质量分析。

SELECTcustomerID,orderDate,orderAmount,CASEWHEN orderAmount < 0 THEN 'Negative'WHEN orderAmount > 10000 THEN 'High Amount'ELSE 'Normal'END AS DataQuality
FROM Orders;

10. 数据格式转换

使用CASE WHEN可以在不同的数据格式之间进行转换,例如将布尔值转换为文本标签。

SELECTproductID,productName,inStock,CASEWHEN inStock THEN 'Available'ELSE 'Out of Stock'END AS StockStatus
FROM Products;

相关文章:

SQL中的CASE WHEN语句:从基础到高级应用指南

SQL中的CASE WHEN语句&#xff1a;从基础到高级应用指南 准备工作 - 表1: products 示例数据&#xff1a; 我们使用一个名为"Products"的表&#xff0c;包含以下列&#xff1a;ProductID、ProductName、CategoryID、UnitPrice、StockQuantity。 -- 建表 CREATE TA…...

超时取消子线程任务

文章目录 前言一、编码思路二、使用步骤直接上代码 总结 前言 问题背景: 主线程需要执行一些任务,不能影响主任务执行,这些任务有超时时间,当超过处理时间后,应该不予处理;如果未超时,应该获取到这些任务的执行结果; 一、编码思路 由于主线程正常执行不能影响,任务会处理很久…...

模块化---common.js

入口文件&#xff1a;app.js // require是同步加载 // 客户端&#xff1a;common.js的模块化&#xff0c;需要browserify编译之后才能使用 // 服务端&#xff1a;运行时同步加载&#xff0c;无问题 let module1 require(./module1.js) let module2 require(./module2.js) co…...

VSCode下载、安装及配置、调试的一些过程理解

第一步先下载了vscode&#xff0c;官方地址为&#xff1a;https://code.visualstudio.com/Download 第二步安装vscode&#xff0c;安装环境是win10&#xff0c;安装基本上就是一步步默认即可。 第三步汉化vscode&#xff0c;这一步就是去扩展插件里面下载一个中文插件即可&am…...

KC705开发板——MGT IBERT测试记录

本文介绍使用KC705开发板进行MGT的IBERT测试。 KC705开发板 KC705开发板的图片如下图所示。FPGA芯片型号为XC7K325T-2FFG900C。 MGT MGT是 Multi-Gigabit Transceiver的缩写&#xff0c;是Multi-Gigabit Serializer/Deserializer (SERDES)的别称。MGT包含GTP、GTX、GTH、G…...

前端代码优化散记

把import Button from xxx 的引入方式&#xff0c;变成import {Button} from xxx 的方式引入&#xff0c;以利于按需打包。原生监听事件、定时器等&#xff0c;必须在componentWillUnmount中清除&#xff0c;大型项目会发生内存泄露&#xff0c;极度影响性能。使用PureComponen…...

HTML <map> 标签的使用

map标签的用途&#xff1a;是与img标签绑定使用的&#xff0c;常被用来赋予给客户端图像某处区域特殊的含义&#xff0c;点击该区域可跳转到新的文档。 编写格式&#xff1a; <img src"图片" border"0" usemap"#planetmap" alt"Planets…...

stable diffusion实践操作-大模型介绍

本文专门开一节写大模型相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 模型下载网站 国内的是&#xff1a;https://www.liblibai.com 国外的是&#xff1a;https://civitai.com&#xff08;科学上网&#xff09; 一、发展历…...

W5500-EVB-PICO进行MQTT连接订阅发布教程(十二)

前言 上一章我们用开发板通过SNTP协议获取网络协议&#xff0c;本章我们介绍一下开发板通过配置MQTT连接到服务器上&#xff0c;并且订阅和发布消息。 什么是MQTT&#xff1f; MQTT是一种轻量级的消息传输协议&#xff0c;旨在物联网&#xff08;IoT&#xff09;应用中实现设备…...

90、00后严选出的数据可视化工具:奥威BI工具

90、00后主打一个巧用工具&#xff0c;绝不低效率上班&#xff0c;因此当擅长大数据智能可视化分析的BI数据可视化工具出现后&#xff0c;自然而然地就成了90、00后职场人常用的数据可视化工具。 奥威BI工具三大特点&#xff0c;让职场人眼前一亮&#xff01; 1、零编程&…...

删除maven中出现.lastUpdate结尾的文件

出现 .lastupdate 结尾的文件的原因:由于网络原因没有将maven的依赖下载完整. 解决方案: 1) 删除所有以 .lastupdate 结尾的文件 A) 1.切换到maven本地仓库 B)2.在当前目录打开cmd命令行(shift右键-->在此处打开命令窗口 或 直接在当前文件路径上敲cmd 或 右键-->…...

Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘

webpack打包js文件中不允许混用import和module.exports。 方式①&#xff1a;babel.config.js添加sourceType: {"presets": [...],"sourceType": "unambiguous" }方式②&#xff1a;安装babel-plugin-transform-es2015-modules-commonjs npm …...

Dockerfile中编译、打包、部署spring boot项目

1、Dockerfile 1.1、什么是Dockerfile Dockerfile是自动构建docker镜像的配置文件&#xff0c;将镜像构建过程通过指令的方式定义在Dockerfile中。配合docker build命令行可以实现自动化的Docker镜像的构建。 1.2、Dockerfile语法解析 我们在学习一门语言或文档语法的时候&am…...

微型计算机原理知识点总结(一)

目录 一.微型计算机 二.微型计算机系统 1.微型计算机硬件系统 冯诺依曼体系结构 总线 (1)微处理器(CPU) 运算器 控制器 内部寄存器 (2)存储器 1.基本概念 2.内存的操作 3.内存的分类 (3)I/O接口与输入/输出设备 2.微型计算机软件系统 (1)系统软件 操作系统 …...

【postgresql 基础入门】psql客户端的使用方法

psql 客户端使用 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xf…...

QTcpSocket发送数据方法

文章目录 一、简介二、write(const char *, qint64)三、isValid() 一、简介 本文主要记录QTcpSocket的write(const char *, qint64)和isValid()。 二、write(const char *, qint64) 概念&#xff1a;在QTcpSocket中&#xff0c;使用write(char* data, int size)函数将指定长…...

select 语句执行顺序

sql 样例 select t_students.name as 姓名, sum(case when b.cname语文 then c.sc_val else 0 end) As 语文 ,sum(case when b.cname数学 then c.sc_val else 0 end) As 数学,sum(case when b.cname英语 then c.sc_val else 0 end) As 英语, From t_students a, t_corses b, t…...

PMD 检查java代码:避免将内部数组直接返回给调用者(MethodReturnsInternalArray)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_bestpractices.html#methodreturnsinternalarray 直接将内部数组暴露给调用者破坏了封装性&#xff0c;因为调用者可能在拥有内部数组的对象外部更改或者删除数组的元素。返回内部数组的拷贝会更加安全。 例如&…...

ActiveMQ配置初探

文章目录 配置wrapper相关配置wrapper是干什么用的MQ的运行内存修改【需修改】修改内容题外话 wrapper.log配置【需修改】引起的问题优化方式 activemq.xml相关配置官网介绍配置管理后台的认证授权【建议修改】配置broker【根据自己需求更改】配置允许jmx监控关闭消息通知持久化…...

【官方中文文档】Mybatis-Spring #示例代码

示例代码 提示 查看 JPetstore 6 demo 了解如何在完整的 Web 应用服务器上使用 Spring。 您可以在 MyBatis-Spring 的 代码仓库 中查看示例代码&#xff1a; 所有示例都能在 JUnit 5 下运行。 示例代码演示了事务服务从数据访问层获取域对象的典型设计。 FooService.java …...

python二级例题

请编写程序&#xff0c;生成随机密码。具体要求如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ &#xff08;1&#xff09;使用 rand…...

【java】【项目实战】[外卖九]项目优化(缓存)

目录 一、问题说明 二、环境搭建 2.1 Git管理代码 2.1.1 创建本地仓库 2.1.2 创建远程仓库 2.1.3 创建分支--》推送到远程仓库 2.2 maven坐标 2.3 配置文件application.yml 2.4 配置类RedisConfig 三、缓存短信验证码 3.1 实现思路 3.2 代码改造 3.2.1 UserContro…...

Scala集合常用函数与集合计算简单函数,高级计算函数Map和Reduce等

Scala集合常用函数与集合计算简单函数 1.Scala集合常用函数 基本属性和常用操作 1.常用函数&#xff1a; &#xff08;1&#xff09; 获取集合长度&#xff08;2&#xff09; 获取集合大小&#xff08;3&#xff09; 循环遍历&#xff08;4&#xff09; 迭代器&#xff08;…...

You must install at least one postgresql-client-<version> package

使用主机上的映射端口来连接到 PostgreSQL 数据库。例如&#xff0c;使用以下命令连接到数据库&#xff1a; psql -h localhost -p 5432 -U postgres出现下面的问题&#xff1a; 分析&#xff1a; 如果您在运行 psql 命令时遇到错误消息 You must install at least one pos…...

爬虫源码---爬取自己想要看的小说

前言&#xff1a; 小说作为在自己空闲时间下的消遣工具&#xff0c;对我们打发空闲时间很有帮助&#xff0c;而我们在网站上面浏览小说时会被广告和其他一些东西影响我们的观看体验&#xff0c;而这时我们就可以利用爬虫将我们想要观看的小说下载下来&#xff0c;这样就不会担…...

【AGC】云数据库API9开发问题汇总

【问题描述】 云数据库HarmonyOS API9 SDK已经推出了一段时间了&#xff0c;下面为大家汇总一些在集成使用中遇到的问题和解决方案。 【问题分析】 1. 报错信息&#xff1a;数据库初始化失败&#xff1a;{“message”&#xff1a;“The object type list and permission …...

ASP.NET Core IOC容器

//IOC容器支持依赖注入{ServiceCollection serviceDescriptors new ServiceCollection();serviceDescriptors.AddTransient<IMicrophone, Microphone>();serviceDescriptors.AddTransient<IPower, Power>();serviceDescriptors.AddTransient<IHeadphone, Headp…...

入门力扣自学笔记277 C++ (题目编号:42)(动态规划)

42. 接雨水 题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组…...

SwiftUI实现iPad多任务分屏

1. 概述 iPadOS引入了多任务分屏功能&#xff0c;使用户能够同时在一个屏幕上使用多个应用程序。这为用户提供了更高效的工作环境&#xff0c;可以在同一时间处理多个任务。 iPad多任务分屏有两种常见的模式&#xff1a;1/2分屏和Slide Over&#xff08;滑动覆盖&#xff09;…...

maven依赖,继承

依赖的范围 compile引入的依赖 对main目录下的代码有没有效&#xff0c;main目录下的代码能不能用compile引入的依赖中的类等 以test引入的依赖&#xff0c;在main中是否可以使用 provided&#xff08;已提供&#xff09;&#xff0c;有了就不要带到服务器上&#xff0c;打包…...