Вернуть самое большое число

Задание: Выбрать список самых дорогих моделей автомобилей каждого бренда. Есть по две машины каждой марки, нужно, чтобы выводилось по самой дорогой из каждой, то есть, должно быть выведено 6 машин.

Выводимые поля: BrandName, AutoModel, Price

Отношения:

Диаграмма Список машин

SELECT
BrandName,
AutoModel,
MAX(Auto.Price) as 'Стоимость'
FROM Brand JOIN Auto ON (Brand.BrandID = Auto.BrandID) 
GROUP BY Auto.BrandID
ORDER BY MAX(Auto.Price) DESC

Если убрать BrandName, AutoModel, то все работает, он находит самое большое число в каждой марке, как вывести необходимые столбы? Ругается, пишет:

Столбец "Brand.BrandName" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.


Ответы (3 шт):

Автор решения: Confireus

Если чётко две машины каждой марки - вот так должно работать (проверял)

SELECT t1.*, brands.BrandName 
FROM Auto t1 
JOIN Auto t2 ON (t1.brandID = t2.brandID AND t1.price > t2.price) 
JOIN Brands on (t1.BrandID = Brands.BrandID)

Но если не две модели в марке, а, скажем, три - сорри. Но может, от моего варианта можно как-то оттолкнуться...

→ Ссылка
Автор решения: ne0n

РЕШЕНИЕ

select distinct 
BrandName,
MAX(Price)
from Brand 
inner join Auto on Brand.BrandID = Auto.BrandID
group by BrandName
order by MAX(Price) DESC
→ Ссылка
Автор решения: tsybin_na

Если не предполагается несколько машин одной марки с одинаковой максимальной ценой тогда можно вот так:

select
  b.BrandName, 
  a.AutoModel, 
  a.Price
from (
  select 
    a.BrandId,
    max(a.Price) as Price
  from    
    Auto a   
  group by
    a.BrandId  
) agr 
join Auto a on agr.BrandId = a.BrandId and agr.Price = a.Price
join Brand b on a.BrandId = b.BrandId
→ Ссылка