MySQL--case when的用法 以及 利用case when 和 group by 实现行转列不使用复合函数
时间: 2024-10-13 19:06:01 浏览: 49
MySQL 中的 `CASE WHEN` 是一种条件语句,用于根据指定的条件返回不同的值。它的基本语法如下:
```sql
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
[ ... ]
ELSE default_result
END as column_name
```
在这个结构中,如果 `condition_1` 为真,则返回 `result_1`;如果满足 `condition_2`,则返回 `result_2`,依此类推。如果所有条件都不满足,则会执行 `ELSE` 后面的 `default_result`。
当你需要利用 `CASE WHEN` 和 `GROUP BY` 结合对数据进行分组并转换数据类型时,例如将分类的数据转换为计数或平均值等,可以这样做:
```sql
SELECT
category,
COUNT(*) AS count,
AVG(sales) AS avg_sales
FROM
your_table
GROUP BY
CASE
WHEN category = 'A' THEN 'Category A'
WHEN category = 'B' THEN 'Category B'
ELSE 'Other'
END
```
这里,我们首先根据 `category` 列的值应用 `CASE WHEN` 来决定新的类别名,然后按新类别进行分组(`GROUP BY`),计算每个组的行数(`COUNT(*))` 和平均销售额(`AVG(sales)`).
请注意,在某些数据库系统中,如Oracle,你可能会遇到性能问题,因为 `CASE WHEN` 内部的计算可能会触发多次的行扫描。在这种情况下,避免复合函数(如 `AVG`、`SUM` 等)直接作用于 `CASE` 结构通常是更好的做法。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)