Začněte nyníZačněte zdarma

Použití CASE a AVG pro výpočet zlomků

CASE výrazy vrátí libovolnou hodnotu, kterou zadáš v klauzuli THEN. Ve spojení s agregačními funkcemi jde o nesmírně silný nástroj pro výpočty a práci s daty. Jednou z klíčových technik je použití CASE uvnitř funkce AVG, díky kterému můžeš spočítat podíl určitých záznamů v databázi.

Takhle vypadá základní struktura:

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

Při tomto přístupu je důležité přesně určit, které záznamy se počítají jako 0 – jinak výsledky nebudou správné!

Tvým úkolem je zjistit počet výher, proher a remíz v každé zemi. Tabulka matches je filtrována tak, aby obsahovala pouze zápasy ze sezón 2013/2014 a 2014/2015.

Toto cvičení je součástí kurzu

Manipulace s daty v SQL

Zobrazit kurz

Pokyny k cvičení

  • Uvnitř funkce AVG() dokonči CASE výraz tak, že ověříš, jestli m.home_goal není rovno m.away_goal, a přiřadíš hodnotu 0, pokud je tato podmínka splněna.
  • Zopakuj tento postup pro porovnání domácích a venkovních gólů v sezóně '2014/2015' a výsledek pojmenuj aliasem ties_2014_2015.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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;
Upravit a spustit kód