题解 | 查询成绩 | 不使用Student表也能做

查询成绩

https://www.nowcoder.com/practice/ef30689ae065434c89c129e9dfe1b4cd

SELECT
    count(*)
FROM
    (
        SELECT
            sId
        FROM
            SC
        WHERE
            cId IN (
                SELECT
                    cId
                FROM
                    Course
                WHERE
                    cname IN (N'语文', N'数学', N'英语')
            )
        GROUP BY
            sId
        HAVING
            SUM(score) / 3 > 60
    ) AS GoodStudents

不使用Student表也能做这道题,这是因为上述代码中的第21行直接把SUM(score)除以3,不需要先获取Student表和Course表的笛卡尔积;也因为对于本题而言,学生有没有完全根本不考试并不会影响题目所要求的统计目的

只是说这样会埋一个坑,如果以后需要统计更多科目,那还要修改第21行的分母为实际需要统计科目的数量,不太灵活。

当然,如果想要用AVG函数,那确实得老老实实先获取Student表和Course表的笛卡尔积。

全部评论
欢迎大家批评指正
点赞 回复 分享
发布于 04-09 15:53 广东

相关推荐

牛客583549203号:腾讯还好,况且实习而已,实习生流动性很大,属于正常现象,记得和HR委婉解释
点赞 评论 收藏
分享
那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务