1、设计一个触发器,每当系统中删除一门课程,就需要自动修改相应成绩表的数据,以便保持系统中课程与成绩数据的完整性与一致性
2.
统计并显示总评成绩(usually成绩占40%,final成绩占60%)的平均分,如果平均分在60分以上,显示“成绩优秀”,并显示前三名学员的考试信息;如果在60分以下,则显示“本班成绩较差”,并显示后三名学员的考试信息。
1、
CREATE TRIGGER update_grades
AFTER DELETE ON courses
FOR EACH ROW
BEGIN
DELETE FROM grades WHERE course_id = OLD.id;
END;
2、
使用 SELECT 语句来统计平均分:
SELECT AVG((usual + final) / 2) as avg_score FROM grades;
使用 IF 语句来根据平均分的值输出不同的消息:
SELECT
IF(AVG((usual + final) / 2) >= 60, '成绩优秀', '本班成绩较差') as result
FROM grades;
使用 ORDER BY 和 LIMIT 语句来选择并输出前三名或后三名的学员考试信息:
SELECT * FROM grades
WHERE (usual + final) / 2 >= 60
ORDER BY (usual + final) / 2 DESC
LIMIT 3;
输出成绩小于 60 分的学员考试信息:
SELECT * FROM grades
WHERE (usual + final) / 2 < 60
ORDER BY (usual + final) / 2 ASC
LIMIT 3;
-- 1
CREATE TRIGGER update_grades
AFTER DELETE ON courses
FOR EACH ROW
BEGIN
DELETE FROM grades WHERE course_id = OLD.id;
END;
2
-- 平局分
SELECT AVG((usual*0.4 + final*0.6) / 2) as avg_score FROM grades
;
select case when AVG((usual*0.4 + final*0.6) / 2) >60 then "成绩优秀"
else "本班成绩较差" end scoreName
from grades;
-- 前三名
SELECT AVG((usual*0.4 + final*0.6) / 2) as avg_score FROM grades
order by AVG((usual*0.4 + final*0.6) / 2) desc
limit 3
;
-- 后三名
SELECT AVG((usual*0.4 + final*0.6) / 2) as avg_score FROM grades
order by AVG((usual*0.4 + final*0.6) / 2)
limit 3
;
代码如下,记得采纳哦!
1.假设有一个名为 "courses" 的课程表和一个名为 "scores" 的成绩表,并且在成绩表中有一个 "course_id" 字段与课程表的 "id" 字段相关联。则可以使用以下 SQL 代码创建触发器:
CREATE TRIGGER update_scores
AFTER DELETE ON courses
FOR EACH ROW
BEGIN
DELETE FROM scores WHERE scores.course_id = OLD.id;
END;
2.假设有一个名为 "scores" 的成绩表,其中有一个 "usual" 字段表示平时成绩,一个 "final" 字段表示期末成绩,以及一个 "total" 字段表示总评成绩。则可以使用以下 SQL 代码计算出所有学员的总评成绩的平均分:
SELECT AVG(total) FROM scores;
若要统计总评成绩在60分以上的学员的信息,则可以使用以下 SQL 代码:
SELECT * FROM scores WHERE total >= 60 ORDER BY total DESC LIMIT 3;
若要统计总评成绩在60分以下的学员的信息,则可以使用以下 SQL 代码:
SELECT * FROM scores WHERE total < 60 ORDER BY total ASC LIMIT 3;