• 【2023.10.25练习】数据库-函数2


    任务描述

    本关任务:编写函数fun_2,实现指定学生的GPA计算。输入参数为学号,函数返回值为该生的GPA。

    编程要求

    在代码文件“step3/query1.sql”中实现函数fun_2; 在代码文件“step3/query2.sql”中实现在select命令中调用函数fun_2,查询所有学生的GPA(按学号的升序输出),结果集数据项:学号、姓名、GPA。

    涉及的表和字段:

    学生表(student) : 学号(sno) char(10) 姓名(sname) varchar(50) 性别(ssex) char(2) 出生日期(sbirth) date 所在系(sdept) varchar(20) 课程表(course) : 课程号(cno) char(4) 课程名(cname) varchar(50) 先行课(cpno) char(4) 学分(credit) decimal(3,1) 学期(semester) smallint 选修表(sc): 学号(sno) char(10) 课程号(cno) char(4) 成绩(grade) smallint

    GPA计算

    GPA=(课程学分1×课程绩点1+课程学分2×课程绩点2+……+课程学分n×课程绩点n)÷(课程学分1+课程学分2+……+课程学分n) 课程绩点换算表:

    成绩绩点
    100-965.0
    95-914.5
    90-864.0
    85-813.5
    80-763.0
    75-712.5
    70-662.0
    65-611.5
    601.0

    最终代码:

    query1.sql

    1. use DB1;
    2. delimiter $$
    3. #请在此处添加函数实现代码
    4. ########## Begin ##########
    5. CREATE FUNCTION fun_2(student_id CHAR(10)) RETURNS DOUBLE
    6. BEGIN
    7. DECLARE total_credits DOUBLE;
    8. DECLARE total_points DOUBLE;
    9. DECLARE gpa DOUBLE;
    10. SELECT SUM(course.credit),/*课程学分1+课程学分2+......+课程学分n*/
    11. SUM(((TRUNCATE(((sc.grade-1)/5),0)-9)/2*course.credit))/*(课程学分1x课程绩点1+......*/
    12. INTO total_credits,total_points
    13. FROM sc
    14. JOIN course ON sc.cno = course.cno
    15. WHERE sc.sno = student_id;
    16. SET gpa = total_points / total_credits;
    17. RETURN gpa;
    18. END$$
    19. ########## End ##########
    20. delimiter ; #恢复分号来作为语句标识。

    query2.sql

    1. use DB1;
    2. #请在此处添加在select命令中调用函数的代码
    3. ########## Begin ##########
    4. SELECT student.sno AS 学号,
    5. student.sname AS 姓名,
    6. fun_2(student.sno) AS GPA
    7. FROM student
    8. ORDER BY student.sno;
    9. ########## End ##########

    总结:熟练运用select into语法和变量使用。

  • 相关阅读:
    web移动开发之flex(弹性盒子---知识点篇)
    Ansible执⾏速度优化
    文本特征提取专题_以python为工具【Python机器学习系列(十二)】
    大文件分片上传、断点续传、秒传
    Java笔记(七)
    普元中间件Primeton AppServer6.5部署SuperMap iServer
    工作【当van-tab不满足固定在顶部】
    1052 卖个萌
    Failed to find a valid digest in the 'integrity' attribute for resource
    【SkyWalking】入门(本文只推荐一些相关文章)
  • 原文地址:https://blog.csdn.net/FeAtherHZM/article/details/134031817