gpt4 book ai didi

MySQL 查询数据库

转载 作者:行者123 更新时间:2023-11-29 08:09:49 25 4
gpt4 key购买 nike

我有两个表 Student 和 Takes

学生:ID、姓名、部门名称

类(class):ID、类(class) ID、成绩

我需要找到每个学生的 ID 和姓名,以及他们所获得的总学分,但不计算学生获得 F 成绩的位置。

这就是我到目前为止所处的位置,但它是错误的,因为它会获取单个学生的姓名,并将该学生的所有学分加起来。

select student.ID, student.name, count(course_id) AS credits
FROM student, takes
WHERE student.ID = takes.ID and takes.grade != 'F';

results
ID name credits
001 stud1 20

最佳答案

要获取每个学生的计数,您需要对学生进行GROUP BY(s.ID, s.name):

SELECT s.ID, s.name, COUNT(*) AS credits
FROM student AS s
INNER JOIN takes AS t ON s.ID = t.ID
WHERE t.grade != 'F'
GROUP BY s.ID, s.name

我猜测某些类(class)比其他类(class)可以获得更多学分。因此,如果您有一个字段显示每门类(class)有多少学分,您可能需要链接该表并使用 SUM(CreditVal) 而不是 COUNT(*)。像这样的东西:

SELECT s.ID, s.name, SUM(c.credits) AS TotalCreditsEarned
FROM student AS s
INNER JOIN takes AS t ON s.ID = t.ID
INNER JOIN course AS c ON c.ID = t.course_id
WHERE t.grade != 'F'
GROUP BY s.ID, s.name

在上面的查询中,只需将 c.ID = t.course_id 更改为将两个表链接在一起的字段即可。

关于MySQL 查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21856084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com