Какой SQL запрос я должен написать, чтобы извлечь данные из трех разных столбцов и в то же время сделать арифметику для одного из них
Я пытаюсь извлечь некоторые данные с помощью SQL-запросов из различных таблиц, которые я уже создал. Эти таблицы выглядят следующим образом:
CREATE TABLE Students ( Student_ID INTEGER PRIMARY KEY, Enrollment_Year DATE, Course_Current_Status VARCHAR(18), First_Name TEXT, Last_Name TEXT, Gender TEXT, Date_Of_Birth DATE, Email TEXT, CourseCode INTEGER REFERENCES Courses(CourseCode) ); CREATE TABLE Modules ( Module_Code INTEGER PRIMARY KEY, Module_Name TEXT, Module_Credits INTEGER, Module_Level INTEGER, ConvenerID INTEGER REFERENCES Conveners(ConvenerID) ); CREATE TABLE Enrollment ( Marks_Obtained INTEGER, Module_Code INTEGER REFERENCES Modules(Module_Code), Student_ID INTEGER REFERENCES Students(Student_ID), Program_Year_When_Enrolled TEXT, PRIMARY KEY(Module_Code, Student_ID) );
Я хочу показать три столбца с моим запросом:
Student_ID
, Average_Second_Year_Marks
, Average_Third_Year_Marks
, Overall_Marks
То, что я хочу сделать, это извлечь данные для студентов, окончивших школу в 2017 году, т. е.
Course_Current_Status = 'Graduated-2017'
На второй год отмечается зачисление.Program_Year_When_Enrolled = 'второй' и на третий год отмечает зачисление.Program_Year_When_Enrolled = 'Третий'. Для общих отметок по запросу должен быть создан новый столбец, то есть общие отметки, которые будут составлять 1/3 от отметок второго года и 2/3 от отметок третьего года.
Что я уже пробовал:
То, что я использую, заключается в следующем:
SELECT Students.Student_ID, AVG (Enrollement.Marks_obtained WHERE Enrollment.Program_Year_When_Enorolled = 'Third' ) AS avg_third_year_marks, AVG (Enrollement.Marks_obtained WHERE Enrollment.Program_Year_When_Enorolled = 'Second' ) AS avg_third_year_marks SUM (avg_third_year_marks*2/3 +avg_second_year_marks*1/3) FROM Students LEFT JOIN Enrollment ON Students.Student_ID=Enrollment.Student_ID WHERE Students.Course_Current_Year='Graduated-2017' GROUP BY Students.Student_ID