Limpeza com CTEs
No capítulo 2, você gerou uma lista de países e o número de partidas em cada país com mais de 10 gols no total. A consulta desse exercício utilizou uma subconsulta na cláusula FROM
para filtrar as partidas antes de contá-las na consulta principal. Abaixo está a consulta que você criou:
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;
Você pode listar uma (ou mais) subconsultas como expressões de tabela comuns (CTEs) declarando-as antes da consulta principal, o que é uma excelente ferramenta para organizar informações e colocá-las em uma ordem lógica.
Neste exercício, vamos reescrever uma consulta semelhante usando uma CTE.
Este exercício faz parte do curso
Manipulação de dados em SQL
Instruções de exercício
- Preencha a sintaxe para declarar sua CTE.
- Selecione
country_id
e faça a correspondência comid
da tabelamatch
na sua CTE. - Você pode unir a CTE à tabela da liga usando
country_id
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
___
FROM match
WHERE (home_goal + away_goal) >= 10)
-- Select league 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
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;