#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