Можно ли ссылаться на встроенное представление, определенное в предложении FROM из подзапроса в предложении WHERE?SQL inline view subquery
SELECT tmp.TeacherName,
tmp.courseid,
tmp.AvgAttendingStudents
FROM (SELECT T.TeacherID AS ID,
T.TeacherName AS Name,
C.CourseID AS CourseID,
avg(L.AttendingStudents) AS AvgAttendingStudents
FROM Teachers AS T
join Courses AS C
ON C.TeacherID = T.TeacherID
join Lessons AS L
ON L.CourseID = C.CourseID
GROUP BY T.TeacherID,
C.CourseID) AS tmp
WHERE tmp.AvgAttendingStudents = (SELECT max(AvgAttendingStudents)
FROM tmp AS tmp2
WHERE tmp2.TeacherID = tmp.TeacherID);
В этом примере я пытаюсь перечислить все учитель, и для каждого из них я хочу показать ход, имеющим максимальные среднего числа посещающих студентов (в расчете на все уроки). Я попытался использовать встроенный просмотр (tmp), чтобы вычислить среднее число посещающих студентов для каждого курса, но я не знаю, могу ли я ссылаться на это представление в подзапросе SELECT max (...). Мне нужно это для работы с Oracle, но, к сожалению, на данный момент у меня нет базы данных Oracle, чтобы попробовать ее. Я пытался с MySQL (так как я не думаю, что я использую какие-либо функции, специфичные для Oracle), но, как и ожидалось, я получаю сообщение об ошибке «Таблица« db.tmp »не существует». Насколько это возможно с Oracle?
Вот мой пример схемы:
CREATE TABLE Courses
(
CourseID INTEGER PRIMARY KEY,
CourseName VARCHAR(32),
TeacherID INTEGER
);
CREATE TABLE Teachers
(
TeacherID INTEGER PRIMARY KEY,
TeacherName VARCHAR(32)
);
CREATE TABLE Lessons
(
LessonDate TIMESTAMP,
CourseID INTEGER,
AttendingStudents INTEGER,
PRIMARY KEY (LessonDate, CourseID)
);
(Извините за мой плохой английский)
В таблице 'учителей' нет столбца' AvgAttendingStudents'. И Oracle не поддерживает 'AS' для псевдонима таблицы. –