Наведіть лад за допомогою CTE
У розділі 2 ви створили список країн і кількість матчів у кожній країні з понад 10 загальними голами. У тій вправі запит використовував підзапит у блоці FROM, щоб відфільтрувати матчі до того, як підраховувати їх в основному запиті. Нижче наведено створений вами запит:
SELECT
c.name AS country,
COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;
Ви можете перетворити один (або кілька) підзапитів на вирази загальних табличних виразів (CTE), оголосивши їх перед основним запитом. Це чудовий спосіб впорядкувати інформацію та розмістити її в логічному порядку.
У цій вправі перепишімо подібний запит із використанням CTE.
Ця вправа є частиною курсу
Маніпулювання даними в SQL
Інструкції до вправи
- Доповніть синтаксис, щоб оголосити свій CTE.
- У CTE виберіть
country_idтаidматчу з таблиціmatch. - Виконайте
LEFT JOINCTE з таблицею league заcountry_id.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
___
FROM match
WHERE (home_goal + away_goal) >= 10)
-- Select league name and count of matches from the CTE
SELECT
l.name AS league,
COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;