Постановка проблемы:
У меня есть таблица EXAM
со следующими полями и образцами данных
student_id exam_date exam_score
-----------------------------------
a1 2018-03-29 75
a1 2018-04-25 89
b2 2018-02-24 91
Я хочу написать запрос SQL вывести следующие поля
1. student_id
2. exam_date
3. highest_score_to_date
4. average_score_to_date
5. highest_exam_score_ever
Мой SQL Запрос:
select
a.student_id,
b.exam_date,
highest_exam_score_to_date,
average_exam_score_to_date,
highest_exam_score_ever
from
(
select
student_id,
exam_date,
max(score) as highest_exam_score_to_date,
avg(score) as average_exam_score_to_date
from exam
group by
student_id,
exam_date
) a
left join
(
select
student_id,
max(score) as highest_exam_score_ever
from exam
group by
student_id
) b
on a.student_id = b.student_id
Можно ли достичь результата, написав лучший запрос SQL?