题解 | #得分不小于平均分的最低分#

得分不小于平均分的最低分

https://www.nowcoder.com/practice/3de23f1204694e74b7deef08922805b2

思路:嵌套查询
题干:找到SQL试卷得分不小于该类试卷平均得分的用户最低得分
分步查询法:
1)找 SQL 试卷,代码如下:
SELECT exam_id
FROM examination_info
WHERE tag = 'SQL';
2)该类试卷(SQL试卷)的平均分,用聚合函数 AVG(score) 实现,伪代码如下:
SELECT AVG(score)
FROM exam_record
WHERE exam_id IN (sql试卷的exam_id);
注意:由于 SQL 试卷 的exam_id有很多种,所以这里用了 IN 关键字。 
3)SQL试卷且不小于(大于等于)该试卷平均分的最低分,用聚合函数 MIN(score) 来实现,伪代码如下:
SELECT MIN(score)
FROM exam_record
WHERE score >= (sql试卷平均分)
    AND exam_id IN (sql试卷的exam_id);
在这里,基本已经打好框架实现了题目要求,现在,将他们组合起来吧,其结果就是:
SELECT MIN(score)
FROM exam_record 
WHERE score >= (SELECT AVG(score)
                FROM exam_record 
                WHERE exam_id IN (SELECT exam_id
                                  FROM examination_info
                                  WHERE tag = 'SQL'))
    AND exam_id IN (SELECT exam_id
                    FROM examination_info
                    WHERE tag = 'SQL');
所以,通过这道题,我们可以学会聚合函数MIN()、AVG()、IN关键字的使用,了解嵌套查询的基本思路。




全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
点赞 评论 收藏
分享
4 6 评论
分享
牛客网
牛客企业服务