case when max
时间: 2024-12-31 09:38:42 浏览: 8
### 使用 SQL 中的 `CASE WHEN` 和 `MAX()` 函数
在 SQL 查询中,可以将 `CASE WHEN` 结构与聚合函数如 `MAX()` 组合使用,以便根据某些条件计算最大值。这种组合允许更灵活的数据分析和处理。
#### 示例 1:基于条件选择最大值
假设有一个名为 `Sales` 的表,其中包含销售人员的名字 (`SalesPerson`) 及其销售额 (`SalesAmount`)。现在想要找出每个销售区域 (`Region`) 中最高销售额对应的销售人员及其具体金额:
```sql
SELECT Region,
MAX(CASE WHEN SalesAmount = (
SELECT MAX(SalesAmount)
FROM Sales AS S2
WHERE S2.Region = S1.Region
) THEN SalesPerson END) AS TopSeller,
MAX(SalesAmount) as MaxSale
FROM Sales AS S1
GROUP BY Region;
```
这段代码通过嵌套子查询找到各区域内最高的销售额,并利用外部查询中的 `CASE WHEN` 来匹配相应的销售人员名称[^1]。
#### 示例 2:按类别筛选后的最大值
如果存在一个产品分类 (`CategoryID`) 列,在求解每种类别下的最畅销商品时同样适用上述方法:
```sql
SELECT CategoryID, ProductName,
CASE
WHEN UnitPrice = (
SELECT MAX(UnitPrice)
FROM Products P2
WHERE P2.CategoryID = P1.CategoryID
)
THEN 'Most Expensive'
ELSE ''
END AS PriceStatus
FROM Products P1
ORDER BY CategoryID ASC;
```
这里不仅展示了如何获取每一类别的最高单价商品,还加入了额外的信息标记——即当某产品的价格等于该类别内的最高价时,则标注为 "Most Expensive"。
阅读全文