通过以下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.歌手))
本文介绍了一种使用SQL实现去除一组数据中的最高分和最低分的方法,并提供了具体实例。适用于评分场景中排除异常值的影响。
4263

被折叠的 条评论
为什么被折叠?



