用 case when
时间: 2024-05-12 08:12:26 浏览: 12
case when是一种SQL语句中的条件语句,用于根据不同的条件输出不同的结果。语法如下:
```
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
```
其中,`condition`表示条件表达式,`result`表示条件成立时的输出结果。可以根据实际需要设置多个条件和对应的结果,最后加上`ELSE`表示所有条件都不满足时的默认输出结果。
例如,查询一个学生的成绩等级(A、B、C、D、E):
```
SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'E'
END AS grade
FROM student;
```
以上语句会根据学生的成绩计算等级,并且把等级作为新的列名`grade`输出。
相关问题
使用case when
好的,你的问题是什么?
问题:请问在 SQL 中如何使用 case when 语句?
回答:case when 语句是 SQL 中的一种条件表达式,用于根据条件返回不同的值。其基本语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
其中,condition1、condition2 等为条件表达式,result1、result2 等为对应条件的返回值,ELSE 子句为默认返回值。
例如,以下 SQL 语句将根据订单金额返回不同的折扣率:
```
SELECT
CASE
WHEN amount >= 1000 THEN 0.9
WHEN amount >= 500 THEN 0.95
ELSE 1
END AS discount_rate
FROM orders;
```
oracle用case when计数,SUM统计使用CASE WHEN
当需要在Oracle数据库中进行统计时,可以使用CASE WHEN语句对数据进行条件分组,并使用SUM函数对分组后的数据进行求和。
例如,假设有一个orders表,其中包含订单信息和订单状态。要计算每个状态的订单数和总金额,可以使用以下查询:
```
SELECT
status,
COUNT(CASE WHEN status = 'completed' THEN 1 ELSE NULL END) as num_completed_orders,
COUNT(CASE WHEN status = 'cancelled' THEN 1 ELSE NULL END) as num_cancelled_orders,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) as total_completed_amount,
SUM(CASE WHEN status = 'cancelled' THEN amount ELSE 0 END) as total_cancelled_amount
FROM orders
GROUP BY status;
```
在这个查询中,我们使用了CASE WHEN语句将数据按照订单状态进行分组,然后使用COUNT和SUM函数对每个分组内的数据进行统计。注意,在COUNT函数中,我们使用了NULL代替0,这是为了避免对不存在的订单状态进行计数。
使用类似的方法,可以对其他字段进行分组和统计。