Я пытаюсь выяснить, какое наибольшее количество раз студент отправляет задание. Это работает в некоторых случаях, но, кажется, выбирает только первый идентификатор назначения и рассчитывает количество представлений для этого.
SELECT S.name, MAX(COALESCE((SELECT COUNT(*) FROM Assignments A WHERE A.student_id = S.id GROUP BY A.assignment_id), 0))
FROM Students S LEFT JOIN Assignments A ON S.id = A.student_id GROUP BY S.id;
Students Submissions
+---+------+ +---+------------+--------------+
|id |name | |id |student_id | assignment_id|
+---+------+ +---+------------+--------------+
| 1 | Lisa | | 1 | 1 | 1 |
| 2 | Andy | | 2 | 1 | 1 |
| 3 | Luke | | 3 | 2 | 1 |
+---+------+ | 4 | 3 | 3 |
| 5 | 2 | 1 |
| 6 | 2 | 2 |
| 7 | 2 | 1 |
+---+------------+--------------+
Итак, из этих таблиц я хочу:
+------+-----+
| Lisa | 2 |
| Andy | 3 |
| Luke | 1 |
+------+-----+