您的位置:首页 > 数据库

SQL sever 查询及格率

2020-03-24 19:24 525 查看

首先需要用到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 课程名称

  • 点赞
  • 收藏
  • 分享
  • 文章举报
每天发芽的豆芽 发布了7 篇原创文章 · 获赞 3 · 访问量 2万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: