Я использую MySQL для введения в курс баз данных. В настоящее время мы практикуем использование агрегатов и объединений для создания новых релевантных столбцов. У меня есть таблица классов, которая содержит информацию о классах, такую как идентификатор класса, имя, код и т. Д. c.
ID Name Description Code MaximumStudents
1 Computer Science 310 SQL NULL CS-HU310 10
3 Communications NULL COMM113 5
4 English NULL ENG101 4
5 Math NULL MA030 5
6 Electrical NULL ECE230 10
У меня также есть таблица ClassStudent, в которой отображаются все учащиеся, записавшиеся на класс, а также время регистрации и коды классов.
//Some data from this table has been removed to avoid unnecessary clutter on the post
ID ClassID StudentID SignUpDate
33 3 3 2020-02-04 13:12:23
34 3 7 2020-02-04 13:12:23
38 4 2 2020-02-04 13:20:12
39 4 4 2020-02-04 13:20:12
40 4 5 2020-02-04 13:20:12
41 4 7 2020-02-04 13:20:12
42 4 8 2020-02-04 13:20:12
43 4 9 2020-02-04 13:20:12
45 5 2 2020-02-04 13:35:22
46 5 3 2020-02-04 13:35:22
47 5 4 2020-02-04 13:35:22
48 5 2 2020-02-04 13:35:42
49 5 3 2020-02-04 13:35:42
50 5 4 2020-02-04 13:35:42
51 5 2 2020-02-05 15:57:20
52 5 3 2020-02-05 15:57:20
53 5 4 2020-02-05 15:57:20
Задача состоит в том, чтобы показать, как ученики могли зарегистрироваться в каждом классе дважды, где это применимо. Если вы посмотрите на таблицу выше, то увидите, что есть ученики с идентификаторами 2, 3 и 4, которые записались в класс № 5 3 раза. Поэтому должен быть дополнительный столбец с именем DoubleSignUps.
Используя следующий запрос, я добавил несколько столбцов, чтобы ответить на другие части вопроса, который задают, однако я не могу понять последний столбец.
SELECT Class.ID, Class.Name, Class.Code, Class.MaximumStudents,
COUNT(DISTINCT ClassStudent.StudentID) AS StudentCount,
MIN(ClassStudent.SignUpDate) AS EarliestSignUp,
MAX(ClassStudent.SignUpDate) AS LatestSignUp,
COUNT(ClassStudent.StudentID) AS DoubleSignUp
FROM Class
LEFT JOIN ClassStudent
ON Class.ID=ClassStudent.ClassID
GROUP BY ID;
Любая помощь / объяснение того, как я могу это сделать, будет принята с благодарностью. Все, что мне нужно сделать, это для каждого ClassID, должен быть связан только один StudentID, и любое дополнительное добавит к счетчику двойной регистрации.
EDIT:
Вот база данных, которую я Я ожидаю увидеть
ID Name Description Code MaximumStudents DoubleSignUps
1 Computer Science 310 SQL NULL CS-HU310 10 0
3 Communications NULL COMM113 5 0
4 English NULL ENG101 4 0
5 Math NULL MA030 5 0
6 Electrical NULL ECE230 10 3
ПРИМЕЧАНИЕ. В моем запросе выше также отображаются столбец «Самая ранняя регистрация», «Последняя регистрация» и «Количество студентов», однако в окне недостаточно места для их добавления.