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
Instrucciones del ejercicio
- Completa la sintaxis para declarar tu CTE.
- Selecciona
country_id
y comparaid
de la tablamatch
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;