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
Egzersiz talimatları
- Bir
AVG()fonksiyonunun içinde,CASEifadesinim.home_goaldeğerininm.away_goaldeğerine eşit olmadığını kontrol ederek tamamla; bu koşul sağlanıyorsa değeri0olarak ata. - Bu süreci
'2014/2015'sezonunda iç saha ve dış saha gollerini karşılaştırmak için tekrarla veties_2014_2015olarak 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;