Začněte nyníZačněte zdarma

Ukliď to pomocí CTE

Ve druhé kapitole jsi sestavil/a seznam zemí a počtu zápasů v každé zemi s více než 10 góly celkem. Dotaz v tomto cvičení využíval poddotaz v klauzuli FROM, aby bylo možné zápasy nejprve vyfiltrovat a teprve poté je v hlavním dotazu spočítat. Tady je dotaz, který jsi tehdy vytvořil/a:

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;

Jeden nebo více poddotazů můžeš zapsat jako společné tabulkové výrazy (CTE) tím, že je deklaruješ před hlavním dotazem. Je to skvělý způsob, jak organizovat informace a seřadit je v logickém pořadí.

V tomto cvičení přepišme podobný dotaz s využitím CTE.

Toto cvičení je součástí kurzu

Manipulace s daty v SQL

Zobrazit kurz

Pokyny k cvičení

  • Doplň syntaxi pro deklaraci CTE.
  • V rámci CTE vyber country_id a id zápasu z tabulky match.
  • Připoj CTE k tabulce league pomocí LEFT JOIN na základě country_id.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

-- 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;
Upravit a spustit kód