Rapikan dengan CTE
Pada bab 2, Anda membuat daftar negara beserta jumlah pertandingan di setiap negara yang memiliki lebih dari 10 total gol. Kueri pada latihan tersebut menggunakan subkueri dalam pernyataan FROM untuk menyaring pertandingan terlebih dahulu sebelum menghitungnya dalam kueri utama. Berikut adalah kueri yang Anda buat:
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;
Anda dapat mencantumkan satu (atau lebih) subkueri sebagai common table expressions (CTE) dengan mendeklarasikannya sebelum kueri utama, yang merupakan cara yang sangat baik untuk mengatur informasi dan menempatkannya dalam urutan yang logis.
Pada latihan ini, mari kita tulis ulang kueri serupa menggunakan CTE.
Latihan ini adalah bagian dari kursus
Manipulasi Data di SQL
Petunjuk latihan
- Lengkapi sintaks untuk mendeklarasikan CTE Anda.
- Pilih
country_iddanidpertandingan dari tabelmatchdalam CTE Anda. LEFT JOINCTE tersebut ke tabel league menggunakancountry_id.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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;