题解 | #得分不小于平均分的最低分#
得分不小于平均分的最低分
http://www.nowcoder.com/practice/3de23f1204694e74b7deef08922805b2
-- SQL试卷得分
-- 不小于该类试卷平均得分
-- 的用户最低分
SELECT
min( er.score )
FROM
exam_record er
LEFT OUTER JOIN examination_info ei ON er.exam_id = ei.exam_id
WHERE
ei.tag = 'SQL'
AND er.score IS NOT NULL
AND er.score >=(
SELECT
avg( er1.score )
FROM
exam_record er1
LEFT OUTER JOIN examination_info ei1 ON er1.exam_id = ei1.exam_id
WHERE
ei1.tag = 'SQL'
);
思路还是很简单的, 查出SQL考试的平均成绩,先筛出比平均成绩低的部分, 再求剩余部分的最小值
重点是: 有很多score是NULL!!! 但是牛客的这个系统让没有写 score is not NULL 条件的查询也通过了,这是为什么我也不清楚, 正常情况下, 用NULL参与比较, where 只会返回unknown, 而不是True真值