Вот данные таблицы
Name Stage ID Event ID Attempt No Score
Ramesh 1 1 1 10
Ramesh 1 1 2 20
Ramesh 2 1 1 30
Suresh 1 1 1 05
Suresh 2 1 1 15
Suresh 2 2 1 25
Suresh 2 2 2 35
Suresh 2 2 3 30
У нас есть таблица с именем, идентификатором этапа, идентификатором события, попыткой №, счетом.
Мы хотим сгруппировать данные по имени, идентификатору этапа, идентификатору события, № попытки, макс. (Оценка)
Могут быть записи для каждой попытки под этапом и событием и именем, и нам нужно взять максимальный счет, и то же самое должно быть отображено.
Выход должен быть:
Name Stage ID Event ID Attempt No Score
Ramesh 1 1 2 20
Ramesh 2 1 1 30
Suresh 1 1 1 05
Suresh 2 1 1 15
Suresh 2 2 2 35
Это будет иметь одну запись для комбинации имя + сцена + событие
Вы можете попробовать ниже, используя коррелированный подзапрос
select * from tablename t1
where score in
(select max(score) from tablename t2 where t1.name=t2.name and t1.stage=t2.stage
and t1.eventid=t2.eventid)
in
а не =
?
Вы можете использовать внутреннее соединение в подзапросе для максимального значения, которое вам нужно
select yt.*
from your_table yt
INNER JOIN (
select Name, Stage_ID, Event_ID, Attempt_No, max(score) max_score
from your_table
group by Name, Stage_ID, Event_ID, Attempt_No
) t on yt.name = t.name
and yt.Stage_ID = t.Stage_ID
and yt.Event_ID = t.Event_ID
and yt.Attempt_No = t.Attempt_No
and yt.score = t.max_score join