Нужна помощь в создании оператора SQL - PullRequest
0 голосов
/ 05 февраля 2019

Вот данные таблицы

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

Это будет иметь одну запись для комбинации имя + сцена + событие

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете использовать внутреннее соединение в подзапросе для максимального значения, которое вам нужно

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 
0 голосов
/ 05 февраля 2019

Вы можете попробовать ниже, используя коррелированный подзапрос

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...