• SQL面试题——查询课程


    题目:  
    成绩表(Grade),包含字段:GradeID(Int,自增), SNO(int, 学号), CNO(int, 课程号), Score(float,分数)

        查询每门课程的平均(最高/最低)分及课程号;

        查询每门课程第1名的学生的学号;

        查询每门课程中超过平均分的所有学生的学号等等;

     

    解答:

    创建表

    Create Table Grade
    (
        GradeID int not null identity(0, 1)
            constraint PK_Grade primary key,
        SNO int,
        CNO int,
        Score float
    )
    Insert into dbo.Grade
    (SNO, CNO, Score)
    values
    (22,23,24),
    (32,33,44),
    (52,53,54),
    (22,23,25),
    (22,23,26),
    (22,23,27),
    (22,23,28),
    (22,23,29),
    (22,23,30);

    1.查询每门课程的平均(最高/最低)分及课程号:

    Select AVG(Score) as AvgScore, CNO from Grade group by CNO
    Select MAX(Score) as MaxScore, CNO From grade group by cno

    2.查询每门课程第1名的学生的学号:

    select * from Grade a where not exists(    
        select 1 from grade b where b.cno = a.cno and (b.score < a.score 
             or (b.score = a.score and gradeid < a.gradeid)))

    3.查询每门课程中超过平均分的所有学生的学号:

    select * from grade a  where not exists(
        select * from(select AVG(score) avgScore, cno from grade group by cno) b  where a.cno = b.cno and a.score < b.avgScore)
  • 相关阅读:
    2018.4.26 lvm
    2018.4.25 github创建新项目
    2018.4.24 快排查找第K大
    2018.4.24 flask_mail使用
    SpringBoot中使用ES和MongoDB常用API
    设计模式-Template_Method模式
    设计模式-Chain of Responsibility模式
    设计模式-Observer模式
    设计模式-Adapter模式
    设计模式-Strategy模式
  • 原文地址:https://www.cnblogs.com/hellolong/p/4065447.html
Copyright © 2020-2023  润新知