BaşlayınÜcretsiz başlayın

CTE'lerle temizle

  1. bölümde, her bir ülkede toplam 10'dan fazla gol olan maçların sayısını içeren bir ülke listesi oluşturdun. O egzersizdeki sorgu, maçları ana sorguda saymadan önce filtrelemek için FROM ifadesinde bir alt sorgu kullandı. Aşağıda oluşturduğun sorgu yer alıyor:
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;

Bir (veya daha fazla) alt sorguyu, ana sorgundan önce tanımlayarak common table expressions (CTE) olarak listeleyebilirsin. Bu, bilgiyi düzenlemek ve mantıksal bir sıraya koymak için harika bir yöntemdir.

Bu egzersizde, benzer bir sorguyu bir CTE kullanarak yeniden yazalım.

Bu egzersiz, kursun bir parçasıdır

SQL ile Veri İşleme

Kursa Göz Atın

Egzersiz talimatları

  • CTE'ni tanımlamak için sözdizimini tamamla.
  • CTE'nde match tablosundan country_id ve maç id değerlerini seç.
  • CTE'yi country_id kullanarak league tablosuyla LEFT JOIN yap.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

-- 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;
Kodu Düzenle ve Çalıştır