永发信息网

oracle去掉最高最低分,如果有并列最高最低分,只去掉一个,SQL改怎么写?多条SQL也可以

答案:3  悬赏:50  手机版
解决时间 2021-11-12 12:01
  • 提问者网友:爱了却不能说
  • 2021-11-12 07:09
oracle去掉最高最低分,如果有并列最高最低分,只去掉一个,SQL改怎么写?多条SQL也可以
最佳答案
  • 五星知识达人网友:雾月
  • 2021-11-12 07:19
有多个人的情况(可能需要一些改动,毕竟没有环境测试,只是凭空想象的rank的排名也忘记了系统的大小的编码了,不过大概意思查不多)
select 人名,avg(分数) 平均分 from (select 人名,rank()over(partition by 人名 order by 分数 desc) 分数排名,分数 from table) a where a.分数排名<>1 group by 人名
如果是一个人,也就是不用分组,那么就先排序,然后用 rownum进行编码,去掉第一个就好。
select avg(分数) from (select rownum row,分数 from table order by 分数) where row<>1
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-11-12 09:11
drop table tab1 purge;
create table tab1 (v number);
insert into tab1 values(1);
insert into tab1 values(1);
insert into tab1 values(2);
insert into tab1 values(3);
insert into tab1 values(3);
insert into tab1 values(4);
insert into tab1 values(5);
insert into tab1 values(5);
select (sum(v)-max(v)-min(v))/(count(*)-2) from tab1;
  • 2楼网友:长青诗
  • 2021-11-12 08:24
select distinct score from (
select score
from (select t.score from score_table t order by t.score)
where rownum = 1
union
select score
from (select t.score from score_table t order by t.score desc)
where rownum = 1)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯