mysql查询成绩表中总学分大于10的学生记录
时间: 2023-07-16 13:13:08 浏览: 313
假设成绩表名为score,包含以下字段:学生ID(student_id)、课程ID(course_id)、成绩(score)、学分(credit)。
可以使用以下SQL语句查询总学分大于10的学生记录:
```
SELECT student_id, SUM(credit) as total_credit
FROM score
GROUP BY student_id
HAVING total_credit > 10;
```
该语句会先按照学生ID分组,然后计算每个学生的总学分。最后使用HAVING子句过滤出总学分大于10的学生记录。
相关问题
mysql创建一个存储过程,有两个输入参数,zr1和zr2,要求当某学生的学分小于10分时将sc表的总成绩不修改,大于等于10分时,在sc表有总成绩基础上加上此学生的学分。
好的,根据您的需求,我可以为您提供如下存储过程的代码:
```
CREATE PROCEDURE UpdateScore(IN zr1 INT, IN zr2 INT)
BEGIN
DECLARE score INT;
SELECT score INTO score FROM sc WHERE zr1 = zr1 AND zr2 = zr2;
IF score >= 10 THEN
UPDATE sc SET total_score = total_score + score WHERE zr1 = zr1 AND zr2 = zr2;
END IF;
END
```
这个存储过程有两个输入参数,分别是 zr1 和 zr2。它首先会根据输入的参数从 sc 表中查询出该学生的学分,然后判断学分是否大于等于10分,如果是,就在 sc 表的总成绩基础上加上此学生的学分。如果学分小于10分,则不修改学生表的总成绩。
希望我的回答能够帮到您!
-4. 创建触发器 trigger4,为成绩表创建一个触发器,当向表中添加成绩记录时,如果成绩大于 60分,该学生就能得到相应的学分,否则,该学生不能得到相应学
在创建这样的触发器时,我们需要检查新的成绩是否大于60分,如果是,则在另一个表(比如credit_grants)中为该学生增加相应的学分。下面是针对MySQL的一个例子:
```sql
CREATE TRIGGER trigger4
AFTER INSERT ON scores
FOR EACH ROW
BEGIN
DECLARE score INT DEFAULT NEW.score;
DECLARE credit INT;
IF score > 60 THEN
SELECT credit_points INTO credit FROM credit_system WHERE course_id = NEW.course_id;
INSERT INTO credit_grants(student_id, earned_credit)
VALUES (NEW.student_id, credit);
ELSE
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Score does not qualify for credits';
END IF;
END;
```
在这个触发器里,当新的成绩插入到`scores`表时,会首先判断分数是否大于60,大于则从`credit_system`表获取对应的学分并插入到`credit_grants`表;否则,触发一个错误信息。
阅读全文