私はすでに SQL でいくつかのテーブルを作成しました。それらは以下のとおりです。
CREATE TABLE Courses(
CourseNo INTEGER CHECK(CourseNo>=100 AND CourseNo<=999) PRIMARY KEY,
Title VARCHAR(100) NOT NULL,
)
CREATE TABLE CourseSections(
CourseNo INTEGER CHECK(CourseNo>=100 AND CourseNo<=999),
SectionNo INTEGER,
InstructorNo INTEGER NOT NULL,
Year INTEGER,
Semester INTEGER,
RoomNo INTEGER NOT NULL,
Weekday INTEGER NOT NULL,
StartTime INTEGER NOT NULL,
FinishTime INTEGER NOT NULL,
Capacity INTEGER NOT NULL,
PRIMARY KEY(CourseNo, SectionNo, Year, Semester)
)
CREATE TABLE Instructor(
InstructorNo INTEGER PRIMARY KEY,
FirstName VARCHAR(40) NOT NULL,
LastName VARCHAR(40) NOT NULL
)
CREATE TABLE Students(
StudentNo INTEGER PRIMARY KEY,
FirstName VARCHAR(40) NOT NULL,
LastName VARCHAR(40) NOT NULL,
Year INTEGER,
GPA REAL
)
CREATE TABLE Enrollments(
CourseNo INTEGER CHECK(CourseNo>=100 AND CourseNo<=999),
Year INTEGER,
Semester INTEGER,
SectionNo INTEGER,
StudentNo INTEGER,
Grade REAL,
PRIMARY KEY(CourseNo, Year, Semester, SectionNo, StudentNo)
)
CREATE TABLE Areas(
AreaName VARCHAR(40) PRIMARY KEY
)
CREATE TABLE AreasOfCourse(
CourseNo INTEGER CHECK(CourseNo>=100 AND CourseNo<=999),
AreaName VARCHAR(40),
PRIMARY KEY(CourseNo, AreaName)
)
CREATE TABLE AreasOfInstructor(
InstructorNo INTEGER,
AreaName VARCHAR(40),
PRIMARY KEY(InstructorNo, AreaName)
)
ここで、各コースのタイトルと、各学期のそのコースの総登録者数を知りたいので、クエリを作成する必要があります。だから私の仕事は以下の通りです:
SELECT c1.Title, COUNT(e1.SectionNo), e1.Semester
FROM Courses c1, Courses c2, Enrollments e1, Enrollments e2
WHERE c1.CourseNo = c2.CourseNo AND e1.Semester = e2.Semester AND
e1.SectionNo <> e2.SectionNo
このクエリを実行するとエラーが発生します。エラーは次のとおりです。
列 'Courses.Title` は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。
この問題を解決する方法を教えてください。