ComeçarComece gratuitamente

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

Ver Curso

Instruções de exercício

  • Preencha a sintaxe para declarar sua CTE.
  • Selecione country_id e faça a correspondência com id da tabela match 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;
Editar e executar código