Как использовать Max (), объединяющий два подзапроса - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть таблица с информацией о баскетбольных матчах, и мне нужно найти команду, которая выиграла больше матчей.Таблица похожа на следующую:

EQ1     EQ2     DATE       RES1   RES2
--------------------------------------
CAL     VAL     21/10/16    72     82
UNI     VAL     24/02/17    58     68
RMA     FCB     02/11/16    81     64

Где e1 - местная команда и res1 ее набранные очки, e2 команда посетителя и res2 ее набранные очки.

Я пробовал разные вещибез результатов, и нет ответа в stackoverflow, который, кажется, решает эту проблему.Я знаю, что могу узнать, сколько матчей команда выиграла, по следующему запросу:

select * 
from encuentros 
where (eq1 = e1.eq1 and res1 > res2) 
   or (eq2 = e1.eq2 and res2 > res1);

Это значит быть локальным и побеждать или быть гостем и побеждать.Теперь мне нужно сделать это для каждой команды и получить максимальное количество выигранных матчей

1 Ответ

0 голосов
/ 29 декабря 2018

Используйте условную логику, чтобы получить команду-победителя, а затем агрегируйте:

select winning_team, count(*)
from (select (case when res1 > res2 then eq1 else eq2 end) as winning_team
      from t
     ) t
group by winning_team
order by count(*) desc;

Чтобы получить только одну строку, используйте fetch first 1 row only в Oracle 12c +.Или используйте подзапрос и rownum или аналитические функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...