用 sql server的case语句进行条件判断,查询每个学生的平均成绩并输出等级
时间: 2024-03-22 08:37:05 浏览: 24
好的,下面是 SQL Server 语句:
```sql
SELECT
StudentID,
AVG(Score) AS AverageScore,
CASE
WHEN AVG(Score) >= 90 THEN 'A'
WHEN AVG(Score) >= 80 THEN 'B'
WHEN AVG(Score) >= 70 THEN 'C'
WHEN AVG(Score) >= 60 THEN 'D'
ELSE 'F'
END AS Grade
FROM
Scores
GROUP BY
StudentID
```
这个语句会查询 `Scores` 表中每个学生的平均成绩,并且使用 `CASE` 语句根据平均成绩的不同输出不同的等级。其中,`AVG` 函数用于计算平均成绩,`GROUP BY` 子句用于按照学生分组计算平均成绩。
相关问题
sqlserver case 语句的列做条件
SQL Server的CASE语句是一种非常灵活的工具,它能够根据不同的情况对数据进行分类或者计算。其中,可以通过CASE语句的列做条件来实现更加复杂和灵活的数据处理。
具体而言,CASE语句中可以通过指定不同的列,来作为条件进行分类。比如,可以通过一个客户订单表,根据不同的订单金额进行区分,分别计算出不同的客户的价值等级。假设客户订单表的结构如下:
```
CREATE TABLE CustomersOrders (
CustomerID int,
OrderID int,
OrderAmount decimal(10,2),
OrderDate datetime
);
```
那么,可以通过如下的CASE语句,将不同的客户根据其平均订单金额,进行价值等级的划分:
```
SELECT
CustomerID,
AVG(OrderAmount) AS AvgOrderAmount,
CASE
WHEN AVG(OrderAmount) > 1000 THEN '高价值'
WHEN AVG(OrderAmount) BETWEEN 500 AND 1000 THEN '中价值'
ELSE '低价值'
END AS CustomerValueLevel
FROM
CustomersOrders
GROUP BY
CustomerID;
```
在上面的语句中,通过计算每个客户的平均订单金额,并根据不同的金额范围,进行价值等级的划分。也可以根据具体的业务需要,进一步优化和调整该CASE语句的条件和逻辑。
总之,通过SQL Server的CASE语句,可以将列作为条件进行分类和计算,进而用于更加复杂和灵活的数据处理需求。
sql server case when语句
SQL Server中的CASE WHEN语句是一种流程控制语句,可以根据条件表达式的结果来决定执行不同的操作。它的语法结构如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
```
其中,`condition`是一个布尔表达式,如果为true,则返回对应的`result`;否则继续判断下一个`condition`。如果所有`condition`都不符合,则返回`default_result`。需要注意的是,每个`result`必须是相同数据类型或可隐式转换为相同数据类型的值。
除了上述基本语法外,CASE WHEN语句还支持多种形式,例如可以在`THEN`子句中嵌套子查询或者调用函数等。