имя таблицы: - my_testКак получить строки, содержащие максимальное значение для каждого сгруппированного набора?
compid roundno
1 1
2 1
2 2
Мне нужен выход, как показано ниже
compid roundno
1 1
2 2
имя таблицы: - my_testКак получить строки, содержащие максимальное значение для каждого сгруппированного набора?
compid roundno
1 1
2 1
2 2
Мне нужен выход, как показано ниже
compid roundno
1 1
2 2
Типичный метод заключается в использовании row_number()
:
select compid, roundno
from (select t.*,
row_number() over (partition by compid order by roundno desc) as seqnum
from t
) t
where seqnum = 1;
Примечания:
rank()
, если вы хотите, чтобы все строки имели одинаковые значения.group by
и max()
. Вышеупомянутое работает, если есть дополнительные столбцы.Вы можете использовать max()
агрегатной функции group by
compid
колонок
select compid, max(roundno)
from tbl
group by compid;
функцию использования заполнителя. - Макс()
select compid,max(roundno)
from my_test
group by compid
'Select БМНПР, MAX (RoundNo) из группы TableName по compid' –
Возможный дубликат [Группа SQL с помощью & Max] (http://stackoverflow.com/questions/1299556/sql- группы по-макс) – GurV