zoukankan      html  css  js  c++  java
  • 存储过程练习二

    题目

    学生成绩信息三个表,结构如下:
    学生表:Member

    字段名称

    数据类型

    说明

    MID

    Char(10)

    学生号,主键

    MName

    Char(50)

    姓名

    课程表:F

    字段名称

    数据类型

    说明

    FID

    Char(10)

    课程,主键

    FName

    Char(50)

    课程名

    成绩表:Score

    字段名称

    数据类型

    说明

    SID

    int

    自动编号,主键,成绩记录号

    FID

    Char(10)

    课程号,外键

    MID

    Char(10)

    学生号,外键

    Score

    int

    成绩

    请编写T-SQL语句来实现如下功能:
    1) 查询各个学生语文、数学、英语、历史课程成绩,例如下表:

    姓名

    语文

    数学

    英语

    历史

    张萨

    78

    67

    89

    76

    王强

    89

    67

    84

    96

    李三

    70

    87

    92

    56

    李四

    80

    78

    97

    66

    2) 查询四门课中成绩低于70分的学生及相对应课程名和成绩。
    3) 统计各个学生参加考试课程的平均分,且按平均分数由高到底排序。
    4) 创建存储过程,分别查询参加1、2、3、4门考试及没有参加考试的学生名单,要求显示姓名、学号。

    解 :

    1)
    SELECT MName AS 姓名,语文,数学,英语,历史 from
    (SELECT m.MName,F.FNAME,s.score
    FROM member m,F,score s
    WHERE m.MID=s.MID AND F.FID=s.FID) AS A        /*三个表联合查询找到有成绩的学生姓名,课程及分数*/
    PIVOT(MAX(A.score) FOR A.FName IN (语文,数学,英语,历史))AS PVT  /*列转到行上去pivot函数应用*/

    2)

    SELECT m.MName,F.FNAME,s.score
    FROM member m,F,score s
    WHERE m.MID=s.MID AND F.FID=s.FID AND s.score<70 /*多表联合查询加条件分数小于70*/

    3)

    SELECT * from
    (SELECT m.MName AS 姓名,AVG(s.score)AS 平均分
    FROM member m,F,score s
    WHERE m.MID=s.MID AND F.FID=s.FID
    GROUP BY m.MName)A
    ORDER BY A.平均分 DESC

     4)

    CREATE  PROCEDURE [dbo].[PR_chosecoursenum]

    @num INT   AS BEGIN

    PRINT '参加'+CONVERT(VARCHAR(5),@num)+'门考试的学生学号及姓名为'

    SELECT m.MName AS 姓名,m.MID AS 学号,COUNT(s.Score)AS 数目 FROM member m LEFT JOIN score s ON  m.MID=s.MID GROUP BY m.MName,m.MID HAVING COUNT(s.Score)=@num END

  • 相关阅读:
    HTML+CSS笔记 CSS进阶续集
    HTML+CSS笔记 CSS进阶
    HTML+CSS笔记 CSS入门续集
    HTML+CSS笔记 CSS入门
    test
    Python Paramiko模块安装和使用
    RedHat升级Python到2.7.6
    python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
    5、使用EF对后台SysSample数据增删改查
    4、创建SQL数据库,添加EF实体数据模型
  • 原文地址:https://www.cnblogs.com/cuig/p/7813053.html
Copyright © 2011-2022 走看看