题解 | 查询成绩 | 不使用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 广东

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务