ComenzarEmpieza gratis

Limpiar con CTE

En el capítulo 2 generaste una lista de países y el número de partidos de cada país con más de 10 goles totales. La consulta de ese ejercicio utilizaba una subconsulta en la sentencia FROM para filtrar los partidos antes de contarlos en la consulta principal. A continuación se muestra la consulta que creaste:

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;

Puedes escribir una subconsulta (o varias) como expresiones comunes de tabla (CTE) declarándolas antes de tu consulta principal, lo que es una excelente herramienta para organizar la información y colocarla en un orden lógico.

En este ejercicio, vamos a reescribir una consulta similar utilizando una CTE.

Este ejercicio forma parte del curso

Manipulación de datos en SQL

Ver curso

Instrucciones del ejercicio

  • Completa la sintaxis para declarar tu CTE.
  • Selecciona country_id y compara id de la tabla match en tu CTE.
  • Aplica LEFT JOIN a la CTE en la tabla de la liga utilizando country_id.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

-- 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 y ejecutar código