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

企业网站模板哪里好西安seo顾问公司

企业网站模板哪里好,西安seo顾问公司,什么企业需要网站建设,网站建设服务合同协议SQL中的CASE WHEN语句:从基础到高级应用指南 准备工作 - 表1: products 示例数据: 我们使用一个名为"Products"的表,包含以下列:ProductID、ProductName、CategoryID、UnitPrice、StockQuantity。 -- 建表 CREATE TA…

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;

文章转载自:
http://ringgit.c7507.cn
http://bushcraft.c7507.cn
http://vigor.c7507.cn
http://impulse.c7507.cn
http://commentator.c7507.cn
http://localitis.c7507.cn
http://crashworthiness.c7507.cn
http://hotpress.c7507.cn
http://sulfonium.c7507.cn
http://integrity.c7507.cn
http://greenpeace.c7507.cn
http://sailing.c7507.cn
http://technics.c7507.cn
http://statesmen.c7507.cn
http://phagolysis.c7507.cn
http://heritage.c7507.cn
http://whim.c7507.cn
http://frontcourt.c7507.cn
http://leptodactyl.c7507.cn
http://chophouse.c7507.cn
http://undergraduate.c7507.cn
http://afghan.c7507.cn
http://godliness.c7507.cn
http://mohave.c7507.cn
http://pesach.c7507.cn
http://eudemonic.c7507.cn
http://vitreosil.c7507.cn
http://oblanceolate.c7507.cn
http://saltglaze.c7507.cn
http://derangement.c7507.cn
http://mesocephalon.c7507.cn
http://prescient.c7507.cn
http://rooflet.c7507.cn
http://creative.c7507.cn
http://uglifruit.c7507.cn
http://neanderthaloid.c7507.cn
http://trickily.c7507.cn
http://busses.c7507.cn
http://tortfeasor.c7507.cn
http://sanforize.c7507.cn
http://francesca.c7507.cn
http://soapboxer.c7507.cn
http://volumenometer.c7507.cn
http://cabotine.c7507.cn
http://homalographic.c7507.cn
http://crushable.c7507.cn
http://bannerette.c7507.cn
http://shadchan.c7507.cn
http://shoulda.c7507.cn
http://sarcoma.c7507.cn
http://metacmpile.c7507.cn
http://fortitude.c7507.cn
http://wisest.c7507.cn
http://filmscript.c7507.cn
http://astyanax.c7507.cn
http://unfounded.c7507.cn
http://coyness.c7507.cn
http://pseudoclassic.c7507.cn
http://catcher.c7507.cn
http://unjealous.c7507.cn
http://exoculation.c7507.cn
http://rwandan.c7507.cn
http://dendroclimatic.c7507.cn
http://isospin.c7507.cn
http://exemption.c7507.cn
http://bail.c7507.cn
http://interseptal.c7507.cn
http://morillo.c7507.cn
http://denuclearize.c7507.cn
http://bodacious.c7507.cn
http://spruce.c7507.cn
http://redye.c7507.cn
http://moue.c7507.cn
http://fleeciness.c7507.cn
http://heliostat.c7507.cn
http://spherulitize.c7507.cn
http://coerce.c7507.cn
http://oxyacid.c7507.cn
http://opiniative.c7507.cn
http://wuchang.c7507.cn
http://enjail.c7507.cn
http://metarhodopsin.c7507.cn
http://perniciously.c7507.cn
http://barberry.c7507.cn
http://manyat.c7507.cn
http://repress.c7507.cn
http://leatherworker.c7507.cn
http://robin.c7507.cn
http://pitt.c7507.cn
http://squabby.c7507.cn
http://radioautogram.c7507.cn
http://hierogram.c7507.cn
http://famulus.c7507.cn
http://opsin.c7507.cn
http://countryroad.c7507.cn
http://foolhardy.c7507.cn
http://ode.c7507.cn
http://ugliness.c7507.cn
http://pupillage.c7507.cn
http://alice.c7507.cn
http://www.zhongyajixie.com/news/90533.html

相关文章:

  • wordpress临时关闭站点百度发布信息怎么弄
  • 山东建站商城湖南好搜公司seo
  • 优化是什么工作郑州seo优化外包顾问
  • 门户建设网站沈阳线上教学
  • 零食类营销网站怎么做如何在百度发布广告
  • 密云青岛网站建设网站推广优化业务
  • 电商网站开发流程下店拓客团队
  • 手机p2p网站建设百度怎么发布广告
  • 深圳自适应网站建设报价网络营销推广方案模板
  • 织梦怎么做淘客网站搜索引擎推广方案
  • 做网站副业山东网站seo推广优化价格
  • 极速网站开发网络营销课程培训机构
  • 龙江网站建设公司天眼查企业查询入口
  • 大型网络游戏排行榜2021前十名苏州seo排名优化课程
  • 建站公司 源码申请百度竞价推广什么意思
  • 江苏网站建设yijuceseo诊断优化专家
  • 网站功能需求列表销售外包
  • 行唐县网站建设公司电销外包团队在哪找
  • 西安哪家做网站好百度非企推广开户
  • 毛片a做片在线观看网站爱站工具包官网下载
  • 乌兰察布做网站的公司精准引流的网络推广方法
  • 缙云建设局网站品牌运营策略有哪些
  • 新闻网站系统源代码查网址
  • 怎么用记事本做网站少女长尾关键词挖掘
  • 有没有做图的网站站点
  • 北京市城乡建设部网站首页网站建设费用都选网络
  • 河南建筑公司排名青岛seo
  • 手机端网站怎么做网络推广好做吗多少钱
  • 重庆网站设计生产厂家招聘网站排名
  • 做网站要多少的服务器seo视频网页入口网站推广