Распределение максимальной цены по заголовкам с названием заголовка?
У меня есть база данных для упражнений. Я хотел бы перечислить максимальную цену различных типов с соответствующим названием заголовка, но, конечно, я не могу просто вставить атрибут названия заголовка в мое предложение SELECT, потому что оно не появляется в предложении GROUP BY. Есть ли решение моей проблемы? Спасибо!
SELECT type, MAX(price) "price"
FROM titles
GROUP BY type
ORDER BY type DESC;
1 ответ
Решение
Вы не упоминаете базу данных, которую используете. Большинство баз данных поддерживают стандарт ANSI row_number()
и оконные / аналитические функции. Вот один из способов сделать то, что вы хотите:
select type, name, price
from (select t.*, row_number() over (partition by type order by price desc) as seqnum
from titles t
) t
where seqnum = 1;
В случае MySQL, который не поддерживает row_number()
, ты можешь сделать:
select type,
substring_index(group_concat(name separator '|' order by price desc), '|', 1) as title,
max(price) as price
from titles
group by type;
Обратите внимание, что это предполагает, что ни один заголовок не содержит символ '|'
,