SQL для отображения имен игроков, сыгравших максимальное количество матчей вместе

#sql

Вопрос:

Отобразите имена игроков, сыгравших максимальное количество матчей вместе. Здесь должны быть показаны Рафаль и Надаль.

введите описание изображения здесь

Комментарии:

1. также пометьте свою СУБД

Ответ №1:

Вы не указываете используемый вами механизм БД, но, например, в sql server вы могли бы сделать это следующим образом:

 select top 1
  case when winner > runner then winner else runner end,
  case when winner < runner then winner else runner end,
  count(*) c
from matches
group by 
  case when winner > runner then winner else runner end,
  case when winner < runner then winner else runner end
order by c desc
 

Вы можете протестировать на этой базе данных<>скрипку<>

case when Операторы упорядочивают имена всегда одинаково. Затем вы подсчитываете, сколько раз происходит это совпадение, а затем делаете заказ по количеству, получая только первую лучшую запись.

Ответ №2:

вот один из способов:

 select winner player1, runner player2 from (
select year, winner, runner
from table
union all 
select year, runner, winner
from table
) t 
group by winner, runner 
order by count(distinct year) desc 
limit 1