Как получить имя модели телефона?
Как получить список самых дорогих моделей телефонов каждого производителя? Сейчас выводит только id производителя и цену, не понимаю как получить имя модели
SELECT
companyId,
max(price)
FROM phone
group by companyId;
Ответы (1 шт):
Ваш вопрос следует бить на два:
Как найти самую большую цену для каждого производителя (см. подзапрос или ваш вариант из вопроса)
У каждого производителя найти телефон с ценой из предыдущего шага
Вот ответ.
select c.company_name,
p.phone_model,
p.price
from phone p
join company c
on p.company_id = c.company_id
where p.price = (select max(price)
from phone p1
where p1.company_id = p.company_id)
order by c.company_name,
p.phone_model;
dbfiddle с моим примером.
В следующий раз, пожалста, добавьте к вопросу еще и тестовых данных, максимально похожих на продуктивные. Так выше шанс получить более подходящий под вашу ситуацию ответ
UPD. если у вас mySQL версии 8 и выше, можно воспользоваться CTE. Это сделает запрос, как минимум, более читаемым:
with max_prices as (
select p.company_id,
c.company_name,
max(p.price) max_price
from phone p
join company c
on p.company_id = c.company_id
group by company_id,
company_name
)
select mp.*,
p.phone_model
from max_prices mp
join phone p
on p.company_id = mp.company_id
and p.price = mp.max_price;
