Возвращает строку минимальной длины в базе данных MySQL - PullRequest
6 голосов
/ 04 февраля 2011

У меня есть таблица «Инвентаризация» с полями Item (varchar), Amount (int), Type (varchar)

Я хотел бы извлечь строки со следующими полями:

Кратчайшая запись в поле «Предмет» из всех «Типов» Типа

Сумма всех сумм всех предметов типа Тип

У меня есть следующее:

SELECT Item, sum( Amount ) FROM Inventory GROUP BY Type

, который дает то, что я хочу, за исключением того, что он не возвращает самый короткий Предмет, вместо этого он имеет один из других Предметов (последний, который он находит, я думаю) Под кратчайшим я подразумеваю минимальную длину строки.

Спасибо за любую помощь.

Ответы [ 3 ]

8 голосов
/ 04 февраля 2011

Вы можете получить его по подзапросу.

select type, sum(amount), item 
from inventory 
group by type
having length(item) <= (select min(length(item)) from inventory)

Пользователь Order By columnName ASC /DESC для сортировки и LIMIT 1 для получения одного из этого

1 голос
/ 04 февраля 2011

select type, sum(amount), min(length(item)) from inventory group by type

должен делать то, что вы хотите

0 голосов
/ 04 февраля 2011

Не уверен, куда это должно идти, поэтому я создаю новый ответ:

select e.type, min_item.s, e.item from inventory e inner join (select e2.type, sum(e2.amount) as s, e2.item, min(length(e2.item)) as bb from inventory e2 group by e2.type) min_item on (length(e.item)=min_item.bb) group by e.type;

Я проверил это, и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...