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