найти команду, набравшую наибольшее количество очков за КАЖДЫЙ СЕЗОН - PullRequest
0 голосов
/ 23 февраля 2019

Ниже приведен мой запрос на улей, в котором я пытаюсь найти команду хозяев, набравшую наибольшее количество очков за каждый сезон.

select t1.season , max(t1.TOTAL_Goals) as Highest_Score
  from
 (select season, home_team_id, sum(home_goals) TOTAL_Goals
    from game_kpark
   group by season, home_team_id
 ) as t1
 group by t1.season

Результат приведенного выше кода приведен в таблице ниже

t1.season   highest_score

20122013    118
20132014    179
20142015    174
20152016    173
20162017    204
20172018    185

ЕслиЯ включаю t1.home_team_id после SELECT и GROUP BY в конце, он возвращает суммарный балл всей команды за каждый сезон, а не самый высокий балл.

Как правильно написать запрос, чтобы увидеть соответствующую команду с наибольшим количеством очков за каждый сезон?

1 Ответ

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

Использование rank() аналитическая функция:

select s.season, s.home_team_id, s.TOTAL_Goals
from
(
select s.season, s.home_team_id, s.TOTAL_Goals, 
       rank() over(partition by season order by s.TOTAL_Goals desc) as rnk
  from
 (--team season totals
  select season, home_team_id, sum(home_goals) TOTAL_Goals 
    from game_kpark
   group by season, home_team_id
 ) s
) s
where rnk=1; --filter teams with highest rank per season
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...