НачатьНачать бесплатно

CTE с вложенными подзапросами

Если вы перечисляете несколько подзапросов в секции FROM с вложенными конструкциями, запрос рискует стать длинным, запутанным и трудночитаемым.

Поскольку многие запросы пишутся с расчётом на повторное использование, грамотная организация кода — залог удобной работы. Оформление подзапросов в виде CTE сэкономит вам время, сократит объём кода и избавит от путаницы в дальнейшем!

Это упражнение является частью курса

Манипуляции с данными в SQL

Посмотреть курс

Инструкции к упражнению

  • Объявите CTE, который вычисляет общее количество голов по матчам за август сезона '2013/2014'.
  • В условии фильтрации внутреннего подзапроса оставьте только матчи августа сезона '2013/2014'.
  • Присоедините CTE к таблице лиг с помощью LEFT JOIN по полю country_id из CTE match_list.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id,
  	   (home_goal + away_goal) AS goals
    FROM match
  	-- Create a list of match IDs to filter data in the CTE
    WHERE id IN (
       SELECT ___
       FROM ___
       WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT 
	___,
    ___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;
Редактировать и запускать код