gpt4 book ai didi

mysql - 在查询中计算 GPA

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

我在连接这个表格上的表格以获得单一结果时遇到了一些问题。计算 GPA 的方法如下:

  1. 获取每门类(class)的平均成绩。
  2. 将每个平均值乘以该类(class)的学分数。
  3. 添加 2 的结果。
  4. 将结果除以 3 除以学分总数。

我有三个相关表:

CREATE TABLE Student
(
SSN INT(11),
SName VARCHAR(25),
Major VARCHAR(25),
PRIMARY KEY (SSN)
);

CREATE TABLE Course
(
CNO INT(11),
CName VARCHAR(3),
CreditHour TINYINT(4),
PRIMARY KEY (CNO)
);

CREATE TABLE Grade
(
SSN INT(11),
CNO INT(11),
Grade TINYINT(4)
);

不幸的是,SQL fiddle 似乎挂了,所以我不能为此做一个 fiddle。我将如何制作一个选择语句来列出带有计算的 gpa 列的学生信息?每次尝试这样做时,我都会得到一组夸大的嵌套子查询,如下所示:

SELECT student.*, (total/hours) as gpa WHERE hours = 
(SELECT SUM(course.creditHours) AS hours
FROM course, student, grade
WHERE course.cno = grade.cno
AND grade.ssn = student.ssn
GROUP BY course.cno)
AND total = (SELECT SUM(AVG(grade.grade)*course.creditHours) as total
FROM grade, course, student
WHERE grade.ssn = student.ssn
AND grade.cno = course.cno)

这实际上似乎也没有朝着正确的方向发展。我应该如何导出此列?

最佳答案

如果你想要学生的 GPA,我会计算如下:

1 将每门类(class)的学时数乘以成绩并将乘积相加,每个学生

2 用 1 除以每个学生的学分总数。

SELECT
s.SSN,
SUM(c.CreditHour * g.Grade) / SUM(c.CreditHour) Average_GPA
FROM Student s
INNER JOIN Grade g on s.SSN = g.SSN
INNER JOIN Course c on g.CNO = c.CNO
GROUP BY s.SSN;

如果您只想要每门类(class)的加权平均 GPA,则可以使用问题中的步骤使用以下查询:

1.获取每门类(class)的平均成绩。

2.将每个平均值乘以所述类(class)的学分数。

3.将2的结果相加

4.用 3 除以总学时数。

SELECT
c.CNO,
SUM(c.CreditHour * average_gpa.GPA) / SUM(c.CreditHour) Weighted_Average_GPA
FROM Course c
INNER JOIN
(
SELECT
CNO,
AVG(g.Grade) GPA
FROM Grade
GROUP BY CNO
) average_gpa
ON c.CNO = average_gpa.CNO
GROUP BY c.CNO;

关于mysql - 在查询中计算 GPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555321/

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