Я знаю, что название немного грязное, но я покажу проблему черного цвета в белом прямо сейчас.Получите строку каждого столбца A с наибольшим значением для другого столбца B
У меня есть таблица, как это:
CREATE TABLE items (
item_id int primary key,
item_type int,
item_value int
);
Фактическая таблица немного отличается, но это упрощенная версия для понимания.
Теперь, что я хочу получить в запросе SELECT, это те, у которых наибольшее значение item_value для каждого элемента item_type.
Я пытался что-то вроде:
SELECT item_id,
item_type,
item_value
FROM items
GROUP BY item_type
ORDER BY item_value DESC;
Это, кажется, делает трюк, но он принимает эоны бежать, и я думаю, что это совершенно неоптимальным. В этом случае было бы быстрее сделать один запрос для каждого типа, но мне интересно, есть ли способ сделать то же самое только в одном запросе с соединением или так.
Большое спасибо!
Примеры данных и желаемые результаты уточнят, что вы подразумеваете под «наивысшим значением для каждого разного элемента item_type». –
Вопросы производительности должны включать в себя «EXPLAIN ANALYZE» и некоторую информацию о размере таблицы, индексе, текущем времени, времени ожидания и т. Д. «Slow» - относительный термин, и нам нужна реальная ценность для сравнения. –
Ну, данные могут отличаться. Медленное относительное, действительно, я имею в виду, что мой запрос, вероятно, является одним из самых медленных способов сделать это, если не самый медленный. наивысшее значение должно быть отредактировано лучше как «наибольшее значение item_value». Я собираюсь изменить это. –