MST

星途 面试题库

面试题:MySQL函数实现复杂业务逻辑

假设存在一个学生成绩表students_grades,包含字段student_id(学生ID), subject(科目), grade(成绩)。请编写一个MySQL函数,输入学生ID,返回该学生所有科目的平均成绩。若该学生没有任何成绩记录,返回 - 1。并且函数需考虑到成绩可能为空值的情况,遇到空值成绩不参与平均成绩计算。
47.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
DELIMITER //

CREATE FUNCTION GetStudentAverageGrade(studentID INT) RETURNS DECIMAL(5,2)
DETERMINISTIC
BEGIN
    DECLARE avgGrade DECIMAL(5,2);
    SELECT AVG(grade) INTO avgGrade
    FROM students_grades
    WHERE student_id = studentID AND grade IS NOT NULL;
    IF avgGrade IS NULL THEN
        SET avgGrade = -1;
    END IF;
    RETURN avgGrade;
END //

DELIMITER ;