Menggunakan CASE dan AVG untuk menurunkan fraksi
Pernyataan CASE akan mengembalikan nilai apa pun yang Anda tentukan dalam klausa THEN. Ini adalah alat yang sangat kuat untuk perhitungan dan manipulasi data yang andal saat digunakan bersama dengan pernyataan agregat. Salah satu tugas utama yang dapat Anda lakukan adalah menggunakan CASE di dalam fungsi AVG untuk menghitung fraksi informasi dalam basis data Anda.
Berikut contoh cara menyusunnya:
AVG(CASE WHEN condition_is_met THEN 1
WHEN condition_is_not_met THEN 0 END)
Dengan pendekatan ini, penting untuk menentukan dengan tepat catatan mana yang dihitung sebagai 0, jika tidak, perhitungan Anda mungkin tidak benar!
Tugas Anda adalah meninjau jumlah kemenangan, kekalahan, dan hasil imbang di setiap negara. Tabel matches telah difilter untuk menyertakan semua pertandingan dari musim 2013/2014 dan 2014/2015.
Latihan ini adalah bagian dari kursus
Manipulasi Data di SQL
Petunjuk latihan
- Di dalam fungsi
AVG(), lengkapi pernyataanCASEdengan memeriksa apakahm.home_goaltidak sama denganm.away_goal, dan berikan nilai0jika kondisi ini terpenuhi. - Ulangi proses ini untuk membandingkan gol kandang dan tandang pada
'2014/2015', dengan aliasties_2014_2015.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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;