Как найти среднюю оценку по городам в SQL
Стоит задача: Найти среднюю оценку каждого города, в котором есть университет. Проблема в том что у меня около 10 городов и приходиться каждый раз писать WHERE и название города например (SELECT ID FROM UNIVERSITIES WHERE CITY='Киев'). Буду признателен за помощь если подскажите как можно это оптимизировать чтобы вручную не писать каждый город.
SELECT AVG (MARK)
FROM EXAM_MARKS E
WHERE STUDENT_ID IN (SELECT ID FROM STUDENTS WHERE UNIV_ID IN (
SELECT ID FROM UNIVERSITIES WHERE CITY='Киев'))
Ответы (1 шт):
Автор решения: cyadvert
→ Ссылка
Вам надо сделать JOIN через все таблицы и GROUP BY.
Что-то типа такого:
SELECT u.CITY, AVG(e.MARK) as avgMark
FROM UNIVERSITIES u
JOIN STUDENTS s ON u.ID=s.UNIV_ID
JOIN EXAM_MARKS e ON s.ID=e.STUDENT_ID
GROUP BY u.CITY
