SELECT tag, difficulty, ROUND((SUM(score)-MIN(score)-MAX(score))/(COUNT(score)-2), 1) FROM examination_info a JOIN exam_record b # using(exam_id) ON a.exam_id = b.exam_id WHERE tag = 'SQL' AND difficulty = 'hard';
抄的第一名的代码,惊呆我了。上一版我还用窗口函数进行排序,是考虑到万一有两个最大值或最小值呢,但是题目中去掉的是一个最大值,就不影响
截断平均值也就是把一个最大值和最小值从总和中删掉,然后除以总数-2即可
看到大佬的using有点不懂,查了下才知道是使用两个表共同的列,等价于下面的on