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

Kesirler türetmek için CASE ve AVG kullanma

CASE ifadeleri, THEN koşulunda belirttiğin herhangi bir değeri döndürür. Bir toplu (aggregate) ifade ile birlikte kullanıldığında bu, sağlam hesaplamalar ve veri işleme için son derece güçlü bir araçtır. Yapabileceğin önemli görevlerden biri de veritabanındaki bilginin bir kesrini hesaplamak için AVG fonksiyonunun içinde CASE kullanmaktır.

Bunu nasıl kuracağına bir örnek:

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

Bu yaklaşımla, hangi kayıtların 0 sayılacağını doğru belirtmek önemlidir; aksi halde hesaplamaların doğru olmayabilir!

Görevin, her ülkedeki galibiyet, mağlubiyet ve beraberlik sayılarına bakmak. matches tablosu 2013/2014 ve 2014/2015 sezonlarındaki tüm maçları içerecek şekilde filtrelenmiştir.

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

SQL ile Veri İşleme

Kursa Göz Atın

Egzersiz talimatları

  • Bir AVG() fonksiyonunun içinde, CASE ifadesini m.home_goal değerinin m.away_goal değerine eşit olmadığını kontrol ederek tamamla; bu koşul sağlanıyorsa değeri 0 olarak ata.
  • Bu süreci '2014/2015' sezonunda iç saha ve dış saha gollerini karşılaştırmak için tekrarla ve ties_2014_2015 olarak takma ad ver.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
Kodu Düzenle ve Çalıştır