COUNT und CASE WHEN mit mehreren Bedingungen
In R oder Python kannst du eine Summe (SUM
) von logischen Werten (z. B. TRUE
/FALSE
) direkt berechnen. In SQL musst du diese Werte in 1 und 0 umwandeln, bevor du eine Summe berechnen kannst. Dies kann mit einer CASE
-Anweisung geschehen.
Es gibt einen entscheidenden Unterschied zwischen der Verwendung von SUM
zum Aggregieren logischer Werte und der Verwendung von COUNT
in der vorherigen Übung …
Dein Ziel ist es, mithilfe der Tabellen country
und match
die Gesamtzahl der von der Heimmannschaft gewonnenen Spiele in den Spielzeiten 2012/2013, 2013/2014 und 2014/2015 in jedem Land zu ermitteln.
Diese Übung ist Teil des Kurses
Datenmanipulation in SQL
Anleitung zur Übung
- Erstelle drei
CASE
-Anweisungen, um die Spiele in den Saisons'2012/2013'
,'2013/2014'
und'2014/2015'
zu „summieren“. - Lasse jede
CASE
-Anweisung eine1
für jedes Spiel zurückgeben, das du einschließen willst, und eine0
für jedes Spiel, das du ausschließen willst. - Schließe die
CASE
-Anweisung in eineSUM
-Anweisung ein, um die Gesamtzahl der Spiele in jeder Saison zurückzugeben. - Gruppiere die Abfrage nach dem Ländernamen-Alias.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
SELECT
c.name AS country,
-- Sum the total records in each season where the home team won
___(___ ___ m.season = '2012/2013' AND m.home_goal ___ m.away_goal
THEN ___ ELSE ___ ___) AS matches_2012_2013,
___(___ ___ m.season = '2013/2014' ___ ___ ___ ___
THEN ___ ___ 0 ___) AS matches_2013_2014,
___(___ ___ m.season = ___ ___ ___ ___ ___
___ 1 ___ 0 ___) AS matches_2014_2015
FROM country AS c
LEFT JOIN match AS m
ON c.id = m.country_id
-- Group by country name alias
GROUP BY ___;