Я начинаю изучать SQL и работаю над этим упражнением: у меня есть таблица «книги», в которой содержится информация о каждой книге (включая цену и идентификатор жанра). Мне нужно получить название жанра с самой высокой средней ценой. Я полагаю, что мне сначала нужно сгруппировать цены по жанрам, а затем получить название самой высокой.
Я знаю, что могу получить результаты GENRE VS COST следующим образом:
select b.genre,
round(avg(b.price),2) as cost
from books b
group by b.genre;
Мой вопрос: чтобы получить жанр с самой высокой ценой AVG из этого результата, мне нужно сделать:
select aux.genre
from (
select b.genre,
round(avg(b.price),2) as cost
from books b
group by b.genre
) aux
where aux.cost = (select max(aux.cost)
from (
select b.genre,
round(avg(b.price),2) as cost
from books l
group by b.genre
) aux);
Это плохая практика или нет другого пути? Я получаю правильный результат, но мне неудобно создавать два раза один и тот же выбор.
Я не использую PL SQL, поэтому не могу использовать переменные или что-то в этом роде.
Любая помощь будет оценена. Заранее спасибо!