2017-01-03 3 views
0

имя таблицы: - my_testКак получить строки, содержащие максимальное значение для каждого сгруппированного набора?

compid roundno 
1  1 
2  1 
2  2 

Мне нужен выход, как показано ниже

compid roundno 
1  1 
2  2 
+1

'Select БМНПР, MAX (RoundNo) из группы TableName по compid' –

+1

Возможный дубликат [Группа SQL с помощью & Max] (http://stackoverflow.com/questions/1299556/sql- группы по-макс) – GurV

ответ

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(). Вышеупомянутое работает, если есть дополнительные столбцы.
2

Вы можете использовать max() агрегатной функции group bycompid колонок

select compid, max(roundno) 
from tbl 
group by compid; 
2

функцию использования заполнителя. - Макс()

select compid,max(roundno) 
from my_test 
group by compid