直接算,截断平均数=(总数-最大分数-最小分数 )/(总数量-2) 。 小数保留一位。使用round。
select
e.tag,
e.difficulty,
round((sum(score)-min(score)-max(score))/(count(score)-2),1) clip_avg_score
from exam_record r
join examination_info e
on (r.exam_id = e.exam_id)
where e.tag='SQL' and difficulty='hard';
select
tag,
difficulty,
round(avg(score),1) as clip_avg_score
from (
select
exam_id,
tag,
difficulty,
score,
dense_rank() over(order by score) as rank_asc,
dense_rank() over(order by score desc) as rank_desc
from exam_record
left join examination_info i
using(exam_id)
where difficulty = 'hard' and tag = 'sql' and score is not null
) t_tmp
-- 去掉正数第一、倒数第一
where rank_asc != 1 and rank_desc != 1
group by tag;