большинство 2 общих значений на основе другого столбца

У меня есть эта таблица:

Team | Player Barca | Messi Chelsea | Lampard Barca | Messi Barca | Messi Chelsea | Lampard Chelsea | Drogba Barca | Iniesta Barca | Xavi Barca | Iniesta Barca | Puyol 

Поэтому мне нужен запрос, который извлекает двух лучших игроков в каждой команде. что-то вроде этого:

 Team | Player Barca | Messi Barca | Iniesta Chelsea | Lampard Chelsea | Drogba 

Вы можете использовать подзапрос / CTE для вычисления подсчетов каждого игрока и ранжирования путем нумерации строк в соответствии с порядком подсчета количества в команде. Затем вытащите лучших двух игроков из каждой команды:

Запрос ( демо ):

 with ranks as ( select team, player, count(*) as count, row_number() over (partition by team order by count(*) desc) as teamrank from players p group by team, player ) select team, player from ranks where teamrank <= 2 order by team, teamrank 

Результаты :

 | TEAM | PLAYER | --------------------- | Barca | Messi | | Barca | Iniesta | | Chelsea | Lampard | | Chelsea | Drogba | 

Это место, где вам нужны функции окна:

 select team, player from (select team, player, count(*) as cnt, row_number() over (partition by team order by count(*) desc) as seqnum from team_player tp group by team, player ) tp where seqnum in (1, 2) 

Обратите внимание, что это устанавливает функцию функции агрегации count(*) в функции windows.

Interesting Posts

Как автоматически генерировать сценарий с использованием командной строки в SQL Server?

«<Xyz> должен быть первым оператором в пакете запросов» при использовании сгенерированного DDL

Сохраненная процедура SQL: переупорядочение строк после удаления

Помогите написать запрос для требования

Asp.net c # SQL Server Update не работает для всех столбцов

Улучшение производительности запроса UPDATE с подзапросами

Когда соответствующие столбцы вычисляются?

Как проверить, что идентификатор не дублируется в ASP MVC и EF

Таблица Переменная внутри курсора, странное поведение – SQL Server

Может ли Microsoft хранить трехзначные поля в одном бите?

Как определить переменную вместо имени таблицы в sql?

Как однозначно указать подузлы родителя

Любой плагин форматирования SQL для Eclipse avaialble?

Передача строки в SQL-запрос из текстового поля

Ввод ограничения FOREIGN KEY 'c_name' в таблице 't_name' может вызвать циклы или несколько каскадных путей

Давайте будем гением компьютера.