利用窗口排序函数row_number()over()筛选出去掉一个最大值和一个最小值后的SQL高难度试卷成绩表,再计算其平均值。
SELECT tag, difficulty, clip_avg_score
FROM (
SELECT tag, difficulty,
ROUND(SUM(score) / COUNT(score), 1) AS clip_avg_score
FROM (
SELECT tag, difficulty, score,
ROW_NUMBER()OVER(ORDER BY score ASC) AS rank_asc,
ROW_NUMBER()OVER(ORDER BY score DESC) AS rank_desc
FROM examination_info
JOIN exam_record
USING(exam_id)
WHERE tag = 'SQL' AND difficulty = 'hard' AND score IS NOT NULL
) order_table
WHERE rank_asc > 1 AND rank_desc > 1
GROUP BY tag, difficulty
) s_table