Задача: Напишите решение, чтобы найти, сколько раз каждый студент посещал каждый экзамен.
Возвращает таблицу результатов, упорядоченную по student_id и subject_name.
Дано:
Таблица: Students
student_id - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит идентификатор и имя одного учащегося в школе.
Таблица: Subjects
subject_name - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит название одного предмета в школе.
Таблица: Examinations
Для этой таблицы нет первичного ключа (столбца с уникальными значениями). Он может содержать дубликаты.
Каждый студент из таблицы Students посещает каждый курс из таблицы Subjects.
Каждая строка этой таблицы указывает, что студент с идентификатором student_id посещал экзамен subject_name.
Решение:
ELECT s.student_id, s.student_name, sub.subject_name, COUNT(e.student_id) AS attended_exams
FROM Students s
CROSS JOIN Subjects sub
LEFT JOIN Examinations e ON s.student_id = e.student_id AND sub.subject_name = e.subject_name
GROUP BY s.student_id, s.student_name, sub.subject_name
ORDER BY s.student_id, sub.subject_name;
Результат:
Источник: https://leetcode.com/problems/students-and-examinations/