SQL sever 查询及格率

首先需要用到cast函数或者round函数
CAST (expression AS data_type)

参数说明:

expression:任何有效的SQServer表达式。

AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。

data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。

使用CAST函数进行数据类型转换时,在下列情况下能够被接受:

(1)两个表达式的数据类型完全相同。
(2)两个表达式可隐性转换。
(3)必须显式转换数据类型。

print cast("123" as int)
--输出 123
create table score  --创建表score
(学号 nchar(10) not null,
课程名称 nchar(10) not null,
成绩 int not null)
insert into score  --添加数据
values('01','语文',90),
('01','数学',48),
('02','语文',76),
('02','数学',56),
('03','语文',59),
('03','数学',78)
select 课程名称,MAX(成绩) 最高成绩,MIN(成绩) 最低成绩,
cast(
cast((sum(case when 成绩>=60 then 1 else 0 end)*100.0/COUNT(学号)*1.0) as float)
as nvarchar(10))+'%' 及格率
from score
group by 课程名称

在这里插入图片描述
或者使用round函数保留小数点后几位

select 课程名称,MAX(成绩) 最高成绩,MIN(成绩) 最低成绩,
CAST(
ROUND(cast(SUM(case when 成绩>60 then 1 else 0 end) as float)/cast(count(*) as float)*100,2)
 as nvarchar(10) )
+'%' 及格率
from score
group by 课程名称

在这里插入图片描述


版权声明:本文为m0_46412065原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。