有趣的SQL(如何去掉一个最高分,一个最低分)

通过以下SQL 可以实现去掉一个最高分一个最低分 而且即就是最高 最低分有重复的也可以实现。

示例数据:

 评委     歌手     得分

A 1 75
A 2 50
A 3 78
A 4 66
B 1 88
B 2 80
B 3 77
B 4 67
C 1 75
C 2 60
C 3 90
C 4 79
D 1 88
D 2 68
D 3 89
D 4 70
NULL NULL NULL

数据库创建如下:

CREATE TABLE [dbo].[tb](
    [评委] [varchar](
1 ) COLLATE Chinese_PRC_CI_AS NULL,
    [歌手] [
int ] NULL,
    [得分] [
int ] NULL
) ON [PRIMARY]

SQL实现如下:

SELECT  *  FROM dbo.tb  as  a WHERE 评委  +  cast(得分  as  varchar( 10 )) not  in  (
select top 
1  评委  +  cast(得分  as  varchar( 10 )) FROM dbo.tb  where  tb.歌手  =  a.歌手 ANd tb.得分  =  (SElect min(得分) FROM tb  as  c  where  歌手  =  a.歌手)
union all
select top 
1  评委  +  cast(得分  as  varchar( 10 )) FROM dbo.tb  where  tb.歌手  =  a.歌手 ANd tb.得分  =  (SElect Max(得分) FROM tb  as  c  where  歌手  =  a.歌手))

 

你可能感兴趣的:(DataBase)