sql 语句
来源:互联网 发布:mac转换视频格式软件 编辑:程序博客网 时间:2024/05/16 20:27
下面的表用来记载体育比赛中运动员信息、裁判员信息以及运动员比赛时裁判给运动员的表现所打的分数:
create table player(pid int primary key, --运动员编号
pName nvarchar(20), --运动员姓名
sex bit) --运动员性别
create table umpire(uid int primary key, --裁判编号
uName nvarchar(20), --裁判姓名
nation nvarchar(20)) --裁判国籍
create table score(sid int identity(1,1) primary key,
pid int references player(pid), --运动员编号
uid int references umpire(uid), --裁判员编号
score int) --成绩
请编写一个函数finalScore,实现计算运动员的最终得分,最终得分的计算方法是:去掉一个最高分、去掉一个最低分、剩余的分数求平均。并利用该函数建立一个视图来显示各运动员的最终成绩,显示的数据为运动员编号、姓名、最终成绩。
Create function finalScore(
@pid int
)returns decimal(10,2)
begin
declare @i decimal(10,2)
select @i=cast(avg(score*1.0) as decimal(10,2)) from score as a
where sid not in(select top 1 sid from score where pid=a.pid order by score desc )
and sid not in(select top 1 sid from score where pid=a.pid order by score asc )
and pid=@pid
return @i
end
go
select dbo.finalScore(5)
create view FinalScore_View
as
select distinct dbo.player.pid as '运动员编号',pName as '姓名',
dbo.finalScore(dbo.player.pid) as '最终成绩'
from dbo.player,dbo.score
where dbo.player.pid=dbo.score.pid
select * from FinalScore_View