select * from course where
course.created_at = (select created_at from course as dates where dates.currency = course.currency order by created_at desc limit 1)
ну и индекс соответствующий (валюта + дата на убывание), как-то так:
CREATE INDEX age ON course(currency, created_at desc);
А вообще может быть лучше нормализовать + денормализовать, добавить таблицу валют, в которую добавить поле current_price и заполнять его при изменении курса? Ну, или сделать в таблице курсов флаг актуальной записи, сбрасывать его у предыдущей записи и устанавливать у последней? Тут может потребоваться "частичный" индекс, не знаю, поддерживает ли его мускуль.