Что здесь OVER?
Оконные функции позволяют создавать RANK на основе любой переменной, по которой вы хотите отсортировать данные. Для этого нужно указать столбец или вычисление, используемое для определения ранга. Это делается с помощью предложения ORDER BY внутри предложения OVER(). Ниже приведён пример:
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
В этом упражнении вы создадите набор данных с ранжированными матчами по лигам — в зависимости от того, в каких лигах в среднем забивается больше всего голов за матч.
Это упражнение является частью курса
Манипуляции с данными в SQL
Инструкции к упражнению
- С помощью
SELECTвыберите название лиги и среднее общее количество забитых голов из таблицleagueиmatch. - Дополните оконную функцию так, чтобы она вычисляла
RANK()по среднему количеству голов по всем лигам в базе данных. - Задайте порядок ранжирования
OVERпо среднему суммарному количеству голов хозяев и гостей.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT
-- Select the league name and average goals scored
___ AS league,
___(___ + ___.away_goal) AS avg_goals,
-- Rank each league over the average goals
___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;