У меня возникли проблемы с соединением таблиц на этом, чтобы получить один результат. Вот как вы рассчитываете средний балл:
- Получите средний балл по каждому курсу.
- Умножьте каждое среднее значение на количество кредитных часов в указанном курсе.
- Добавьте результаты из 2.
- Разделите результат от 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, похоже, не работает, поэтому я не могу сделать для этого скрипку. Как мне сделать оператор выбора, чтобы перечислить информацию о студенте с вычисляемым столбцом 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)
На самом деле это тоже не похоже на то, чтобы двигаться в правильном направлении. Что я должен делать, чтобы получить этот столбец?