SQL select max из указанного столбца

57
7

Мне нужно показать данные max из указанного colum, возможно ли это? Я все еще новичок в этом SQL.

У меня есть такие данные

Id  Order_id    Sequence
------------------------
1 A01 1
2 A01 2
3 A02 1
4 A02 2
5 A02 3
6 A03 1

Id является первичным ключом.

Ожидаемый результат

Id  Order_id    Sequence
------------------------
2 A01 2
5 A02 3
6 A03 1

спросил(а) 2017-10-28T07:27:00+03:00 2 года, 10 месяцев назад
1
Решение
90

Если вам не нужен идентификатор в результате, вы можете просто создать группу... иначе вам нужен внутренний запрос в качестве ответа, предоставленного @kbball.


select order_id, max(sequence)
from tablename
Group by order_id;

ответил(а) 2017-10-28T07:53:00+03:00 2 года, 10 месяцев назад
69

Вам нужно выполнить подзапрос:

SELECT t.id, t.order_id, t.sequence
FROM t
INNER JOIN
(SELECT order_id, MAX(sequence) as mx
FROM t
GROUP BY order_id) sub
ON t.order_id = sub.order_id
WHERE t.sequence = sub.mx

Таким образом, в основном запрос, называемый sub, находит максимальное значение последовательности для каждого идентификатора заказа. Затем эти результаты объединяются обратно в основную таблицу, которую я вызываю t, поэтому вы можете похлопывать по id.

ответил(а) 2017-10-28T07:40:00+03:00 2 года, 10 месяцев назад
40

Вы можете использовать correlated subquery как correlated subquery ниже.

SELECT *
FROM table1 t1
WHERE t1.Sequence =
( SELECT max(t2.Sequence)
FROM table1 t2
WHERE t1.Order_id = t2.Order_id );

Результат:

Id   Order_id   Sequence
------------------------
2 A01 2
5 A02 3
6 A03 1

DEMO

ответил(а) 2017-10-28T08:26:00+03:00 2 года, 10 месяцев назад
40

Используйте GROUP BY и ORDER BY

SELECT Id,Order_id,MAX(Sequence) AS Sequence FROM table_name GROUP BY Order_id ORDER BY Id

ответил(а) 2017-10-28T07:48:00+03:00 2 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема