Kom igångKom igång gratis

Städa upp med CTE:er

I kapitel 2 skapade du en lista över länder och antalet matcher i varje land med fler än 10 mål totalt. Frågan i den övningen använde en underfråga i FROM-satsen för att filtrera matcherna innan de räknades i huvudfrågan. Här är frågan du skapade:

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;

Du kan lista en (eller flera) underfrågor som common table expressions (CTE:er) genom att deklarera dem före huvudfrågan. Det är ett utmärkt sätt att organisera information och presentera den i en logisk ordning.

I den här övningen skriver vi om en liknande fråga med hjälp av en CTE.

Den här övningen är en del av kursen

Datahantering i SQL

Visa kurs

Övningsinstruktioner

  • Komplettera syntaxen för att deklarera din CTE.
  • Välj country_id och matchens id från tabellen match i din CTE.
  • Använd LEFT JOIN för att koppla ihop CTE:n med ligatabellen via country_id.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

-- 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;
Redigera och kör kod