展开全部
--创建表
createtablestudent
(
姓名nvarchar(20),
数学32313133353236313431303231363533e58685e5aeb931333264663639float,
语文float,
英语float,
体育float,
物理float,
化学float
)
go
--插入语句
insertintostudentvalues('枫',50,60,70,50,60,40)
insertintostudentvalues('巅',60,80,50,58,80,90)
go
--查询
select*fromstudent
go
--不及格科目数量
;withtestas
(
(select姓名,'数学'科目,数学成绩fromstudentwhere数学<60)unionall
(select姓名,'语文'科目,语文成绩fromstudentwhere语文<60)unionall
(select姓名,'英语'科目,英语成绩fromstudentwhere英语<60)unionall
(select姓名,'体育'科目,体育成绩fromstudentwhere体育<60)unionall
(select姓名,'物理'科目,物理成绩fromstudentwhere物理<60)unionall
(select姓名,'化学'科目,化学成绩fromstudentwhere化学<60)
)
select姓名,count(姓名)不及格科目数量fromtestgroupby姓名
--不及格率
;withtestas
(
selectdistinct
(selectcount(姓名)fromstudent)a,
(selectcount(姓名)fromstudentwhere数学<60)b,
(selectcount(姓名)fromstudentwhere语文<60)c,
(selectcount(姓名)fromstudentwhere英语<60)d,
(selectcount(姓名)fromstudentwhere体育<60)e,
(selectcount(姓名)fromstudentwhere物理<60)f,
(selectcount(姓名)fromstudentwhere化学<60)g
fromstudent
)
select
convert(nvarchar(20),cast(basfloat)/a*100)+'%'数学不及格率,
convert(nvarchar(20),cast(casfloat)/a*100)+'%'语文不及格率,
convert(nvarchar(20),cast(dasfloat)/a*100)+'%'英语不及格率,
convert(nvarchar(20),cast(easfloat)/a*100)+'%'体育不及格率,
convert(nvarchar(20),cast(fasfloat)/a*100)+'%'物理不及格率,
convert(nvarchar(20),cast(gasfloat)/a*100)+'%'化学不及格率
fromtest
执行结果如图所示