zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    EOS概念理解总结
    boost asio one client one thread
    EOS 数据签名与公匙验证代码用例
    EOS 智能合约编写(一)
    EOS多节点同步代码分析
    EOS 用户权限相关命令
    EOS 多主机多节点配置终极命令
    EOS多主机多节点环境配置
    ubuntu命令错误集
    java多线程中的调度策略
  • 原文地址:https://www.cnblogs.com/hellolong/p/4065447.html
Copyright © 2011-2022 走看看