ÎncepețiÎncepe gratuit

Organizare cu CTE-uri

În capitolul 2, ai generat o listă cu țările și numărul de meciuri din fiecare țară în care s-au marcat mai mult de 10 goluri în total. Interogarea din acel exercițiu folosea un subquery în instrucțiunea FROM pentru a filtra meciurile înainte de a le număra în interogarea principală. Mai jos este interogarea pe care ai creat-o:

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;

Poți lista unul sau mai multe subquery-uri ca expresii de tabel comune (CTE-uri) prin declararea lor înaintea interogării principale – o metodă excelentă pentru a organiza informațiile și a le aranja într-o ordine logică.

În acest exercițiu, vom rescrie o interogare similară folosind un CTE.

Acest exercițiu face parte din cursul

Manipularea datelor în SQL

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează sintaxa pentru a declara CTE-ul.
  • Selectează country_id și id-ul meciului din tabela match în cadrul CTE-ului tău.
  • Aplică LEFT JOIN între CTE și tabela league folosind country_id.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- 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;
Editează și rulează codul