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
Instrucțiuni pentru exercițiu
- Completează sintaxa pentru a declara CTE-ul.
- Selectează
country_idșiid-ul meciului din tabelamatchîn cadrul CTE-ului tău. - Aplică
LEFT JOINîntre CTE și tabela league folosindcountry_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;