WITH ExamInfo AS (
SELECT exam_id,tag,difficulty
FROM examination_info
WHERE tag = 'SQL' AND difficulty = 'hard'
)
SELECT
ei.tag,
ei.difficulty,
ROUND(avg(er.score), 1) AS clip_avg_score
FROM
ExamInfo AS ei
JOIN
exam_record er ON ei.exam_id = er.exam_id
WHERE
er.score NOT IN (
(SELECT MAX(score) FROM exam_record WHERE exam_id = ei.exam_id),
(SELECT MIN(score) FROM exam_record WHERE exam_id = ei.exam_id)
)
GROUP BY
ei.tag, ei.difficulty;
解法一:用withExamInfo AS (...)创建一个临时的子查询,该子查询返回符合条件的考试信息的eaxm_id,tag,difficulty
解法二 :来自题解
select tag, difficulty, ROUND((SUM(er.score) - MAX(er.score) - MIN(er.score)) / (COUNT(er.score) - 2), 1) AS clip_avg_score FROM examination_info AS ei JOIN exam_record AS er using(exam_id) WHERE ei.tag = 'SQL' AND ei.difficulty = 'hard'
using 是对有相同的列两个表进行合并

京公网安备 11010502036488号